如何将输入变量{i1}传递至程序执行环节并实现跨代码块调用
问题解决:让输入变量i1在后续代码中可用
首先,你的代码里i1的赋值存在错误,导致它无法正确存储输入的数值:
i1 = print(int(input("Enter_number: ")))
print()函数的返回值是None,所以这里i1实际被赋值为None,而非你输入的数字。正确写法是先获取输入值,按需打印:
i1 = int(input("Enter_number: ")) print(i1) # 若需要展示输入值则保留该行
关于变量作用域
在Python中,只要变量在全局作用域(你的代码无嵌套函数/类,属于全局作用域)定义,后续所有代码块都能直接访问它。修正i1的赋值后,后续代码里直接调用i1就能使用这个变量的值。
顺便修正代码里的其他语法错误
你的for-else块语法不正确,两种修正方案如下:
方案1:直接判断列表是否为空
from pathlib import Path Path('menu_17').mkdir(exist_ok=True) my_folder = Path("./menu_17") menu_file = my_folder / "menu1.txt" menu_file.write_text('Show_all_task\nAdd_a_task\nMark_the_task_as_completed\nDelete_task\nGo_out') with open(menu_file, 'r') as file: lines1 = file.readlines() for i, line in enumerate(lines1, 1): print(f"{i}. {line.strip()}") # 修正i1的赋值 i1 = int(input("Enter_number: ")) print(i1) all_task = my_folder / "all_task1.txt" with open(all_task, 'r') as file: lines_a = file.readlines() # 处理任务列表为空的情况 if not lines_a: print('EMPTY') else: for b, line in enumerate(lines_a, 1): print(f"{b}. {line.strip()}")
方案2:正确使用for-else语法
当for循环未迭代任何元素时,会执行else块:
from pathlib import Path Path('menu_17').mkdir(exist_ok=True) my_folder = Path("./menu_17") menu_file = my_folder / "menu1.txt" menu_file.write_text('Show_all_task\nAdd_a_task\nMark_the_task_as_completed\nDelete_task\nGo_out') with open(menu_file, 'r') as file: lines1 = file.readlines() for i, line in enumerate(lines1, 1): print(f"{i}. {line.strip()}") # 修正i1的赋值 i1 = int(input("Enter_number: ")) print(i1) all_task = my_folder / "all_task1.txt" with open(all_task, 'r') as file: lines_a = file.readlines() for b, line in enumerate(lines_a, 1): print(f"{b}. {line.strip()}") else: # 当lines_a为空时,循环无迭代,直接执行此块 print('EMPTY')
内容的提问来源于stack exchange,提问作者Vasya Korobko
相关产品推荐
相关产品推荐

