首页 > 解决方案 > 如何检查名称是否在 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

解决方案


您将在 Python 2 中收到此错误。在 Python 2 中,input()使用您输入的确切值。

在您的示例中,您正在输入nate而不是'nate'. 前一个值是一个变量名(在您的代码中未定义,因此是NameError),而后者是一个字符串。

在 Python 3 中,input()按照您的假设行事,并将字符串传递给您的代码。

如果您确定要使用 Python 2,则可以替换input()raw_input(),它会将您的输入解释为字符串而不是变量名。


推荐阅读