Python运行出现NameError: name 'Rem_Val' is not defined报错如何解决
问题原因&修复方案
1 NameError报错原因
你碰到的NameError: name 'Rem_Val' is not defined报错,基本是本地运行的代码缩进错误导致的:你贴出的代码里list_1.remove(Rem_Val)和Rem_Val = input(xxx)同属if remove == 'Y'的分支,此时只有触发这个分支Rem_Val才会被定义,要是你实际运行的代码把list_1.remove(Rem_Val)写到了这个分支外面,只要用户没有连续选两次Y,程序运行到这行的时候就找不到对应的变量,触发报错。你可以先核对下本地代码的缩进是否和你贴出来的一致。
2 隐藏的其他报错
就算缩进没问题,你连续选两次Y后还会碰到ValueError: list.remove(x): x not in list报错:
因为input()函数返回的永远是字符串类型,你输入3的话实际拿到的是"3",但你的列表里存的是整数类型的3,二者类型不匹配,列表找不到对应元素。
修正后的代码
list_1 = [8, 3, 7] print("This is List_1: ") print(list_1) modify = input("Do you wish to modify the list? Y/N: ").strip().upper() if modify == 'Y': remove = input("do you wish to remove something: ").strip().upper() if remove == 'Y': try: rem_val = int(input("Enter the number you want to remove: ")) if rem_val in list_1: list_1.remove(rem_val) print(f"删除后的列表:{list_1}") else: print(f"列表中不存在数值{rem_val}") except ValueError: print("请输入有效的整数") elif remove == 'N': print("Thank you for using this") else: print("Please answer in Y/N format \n Y= Yes, N=No") elif modify == 'N': print("Thank you for using this") else: print("Please answer in Y/N format \n Y= Yes, N=No")
主要修改点
- 输入后统一转大写,避免用户输入小写y/n识别失败
- 将用户输入的要删除的内容转成int类型,和列表元素类型匹配
- 增加了异常捕获和存在性判断,避免用户输入非数字或者列表不存在的数值时程序直接崩溃
内容的提问来源于stack exchange,提问作者Hunky Tornado
相关产品推荐
相关产品推荐

