首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中断和其他与for循环结合使用的问题

中断和其他与for循环结合使用的问题
EN

Stack Overflow用户
提问于 2022-06-24 20:43:25
回答 2查看 41关注 0票数 -1

在“基萨拉拉斯”一书中,J. (2013)。Python 3工程中的数值方法。剑桥大学出版社。第10页作者的这一行代码不适用于我:

代码语言:javascript
复制
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的虚拟环境在本地工作

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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年历史的书教现代语言编程?

票数 1
EN

Stack Overflow用户

发布于 2022-06-24 20:48:18

删除eval

代码语言:javascript
复制
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 list
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72749212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档