python - 如何检查名称是否在 python 中的名称列表中?
问题描述
我正在编写俄勒冈越野游戏,这是我拥有的导致问题的代码,我不知道它为什么会出现问题。我想要做的是,如果他们输入的名称包含列表中的单词,它将把变量 Easter_mode 设置为 1,如果他们不这样做,那么它将把 Easter_mode 设置为 0。需要在列表中的单词分别是:(Sturtz, sturtz, Nate, nate)谢谢
#asking name
player_name = input('What is your name:')
while len(player_name) >= 0:
if len(player_name) > 1:
print("Weclome" + str(player_name))
print('Which mode do you want to play?')
mode_choice = input('(easy) More modes comming soon:')
break
if len(player_name) == 1:
player_name_choice = input(str(player_name)+"? Are you kidding me? Only one letter? You might regreat it (Y/N):")
if player_name_choice == "y" or player_name_choice == "Y":
print("Ok Your Choice!!...")
mode_choice = 'easter'
break
if player_name_choice == "n" or player_name_choice == "N":
player_name = input('What is your name:')
else:
print("You do not type anything, try again")
player_name = input('What is your name:')
#Check Easter Egg Names
easter_names = ["nate sturtz", "Nate Sturtz", "Nate", "nate", "Sturtz", "sturtz"]
if player_name in easter_names:
easter_mode = 1
else:
easter_mode = 0
#easter eggs for name
if easter_mode == 1:
year_set = 2005
mode_choice = 'easter'
else:
year_set = input('Enter a year whatever you like:')
if year_set.isdigit():
return_num = 0
else:
return_num = 1
while return_num == 1:
print('Error,please try again!')
year_set = input('Enter a year whatever you like:')
if year_set.isdigit():
return_num = 0
else:
return_num = 1
year_set = int(year_set)
当我运行完整文件时,我得到
Traceback (most recent call last):
File "Oregon.py", line 64, in <module>
player_name = input('What is your name:')
File "<string>", line 1, in <module>
NameError: name 'nate' is not defined
您可以在 Github 上查看完整代码
https://raw.githubusercontent.com/nsturtz/Oregon-Trail/master/Oregon.py
解决方案
您将在 Python 2 中收到此错误。在 Python 2 中,input()
使用您输入的确切值。
在您的示例中,您正在输入nate
而不是'nate'
. 前一个值是一个变量名(在您的代码中未定义,因此是NameError
),而后者是一个字符串。
在 Python 3 中,input()
按照您的假设行事,并将字符串传递给您的代码。
如果您确定要使用 Python 2,则可以替换input()
为raw_input()
,它会将您的输入解释为字符串而不是变量名。
推荐阅读
- ruby - 如何在 Mac 上安装 1.9.3 版本的 ruby?
- android - Android Studio 代码覆盖率报告与 Codecov.io 不同
- docker - Gitlab CI 上的 Docker 运行器 - 仅适用于特定阶段的代理
- sql-server - 参数化的原始 sql 查询比使用实际值的查询慢得多
- ios - Flutter 应用内购买。去生产
- identityserver4 - 使用外部登录页面在 Identity 中进行身份验证
- sql - 文本模式的搜索优化
- python - if 的问题 - Python3
- unicode - 我在将 Unicode 字符转换为 UTF-8 中的两个十六进制字节时遇到问题
- amazon-web-services - EC2 实例的服务器代码是否会在启动后复制到属于 Auto-Scaling 组的其他实例?