如何检查一个名称是否在 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


小怪兽爱吃肉
浏览 167回答 2
2回答

墨色风雨

您将在 Python 2 中收到此错误。在 Python 2 中,input()使用输入的确切值。在您的示例中,您正在输入nate而不是'nate'。前一个值是一个变量名(在代码中未定义,因此是NameError),而后者是一个字符串。在 Python 3 中,input()行为如您所假设,并将字符串传递给您的代码。如果您确定要使用 Python 2,您可以替换input()为raw_input(),它将把您的输入解释为字符串而不是变量名。

暮色呼如

在Python 2下,您可以使用raw_input而不是input阻止Python将用户输入解释为Python代码。然而,由于 Python 2 已被弃用,我强烈建议不要使用它1。请改用 Python 3,它可以input按预期工作。1当然,维护遗留产品除外。但这似乎与这里无关。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python