在“基萨拉拉斯”一书中,J. (2013)。Python 3工程中的数值方法。剑桥大学出版社。第10页作者的这一行代码不适用于我:
list = ['Jack', 'Jill', 'Tim', 'Dave']
name = eval(input('Type a name: ')) # Python input prompt
for i in range(len(list)):
if list[i] == name:
print(name,'is number',i + 1,'on the list')
break
else:
print(name,'is not on the list')我有一个错误: NameError:名称"Tim“未定义
我正在使用VS和anaconda的虚拟环境在本地工作
发布于 2022-06-24 20:58:21
正如其他人所指出的,在另一个答案中,问题在于eval()的使用。
如果您尝试输入'Tim' (在修改了引号之后),而不是输入'Tim',那么您的原始代码就能工作,因为Python会将其计算成一个字符串,该字符串与列表中的值匹配。
但是,这是非常糟糕的实践,除非确实有充分的理由这样做,并且您的脚本的用户理解他们被期望并能够进入工作的Python代码,否则不应该使用。
这本书并没有对此做太多的解释,并且似乎用它来解释更多关于类型的东西。此外,像这些’Input a: ’这样的引号而不是像'Input a: '这样的常规引号的排版用法表明,作者并没有把读者的兴趣放在心上。
真正的答案必须是:买一本更好的书,并警告其他人使用基萨拉拉斯,J. (2013). Python 3工程中的数值方法.剑桥大学出版社
也许它可以用于数值方法,但对于Python的教学却很糟糕。
注意:也许2014年6月的网络版会更好,但我会把钱花在别的东西上。此外,谁在2022年用一本有8-9年历史的书教现代语言编程?
发布于 2022-06-24 20:48:18
删除eval
list = ['Jack', 'Jill', 'Tim', 'Dave']
name = input('Type a name: ')
for i in range(len(list)):
if list[i] == name:
print(name,'is number',i + 1,'on the list')
break
else:
print(name,'is not on the list')
# Type a name: Tim
# Tim is number 3 on the listhttps://stackoverflow.com/questions/72749212
复制相似问题