You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:27:00