你,因为你使用player1
和player2
定义之前收到此错误。这很容易解决:
def player():
player1 = ''
player2 = ''
# The rest of your code here...
虽然你的代码还有一些其他问题。例如:
while (player1.isalpha()):
player1 = input("What is the name of our first player? \n")
print("Welcome " + player1)
return
else:
print("Please enter a name without integers or spaces")
return False
这return
在while
循环将作为你的欢迎player1
尽快退出功能。但是,你说你想提示第二个玩家,所以它应该是break
。接下来,当我做这些更正,然后删除该函数入解释,这是我得到:
>>> def player():
... player1 = ''
... player2 = ''
... while (player1.isalpha()):
... player1 = input("What is the name of our first player? \n")
... print("Welcome " + player1)
... break
... else:
... print("Please enter a name without integers or spaces")
... return False
... while (player2.isalpha()):
... player2 = input("What is the name of our first player? \n")
... print("Welcome " + player2)
... break
... else:
... print("Please enter a name without integers or spaces")
... return True
...
>>> player()
Please enter a name without integers or spaces
False
>>>
你空player1
& player2
都不会回来了α,所以你永远不会得到提示用于输入。请参阅以下内容:
>>> player1 = ''
>>> assert player1.isalpha()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>>
更新
通过我以为这下一块的时候,别人也发布了类似的回答。我将包括我的看看在做不同的方式。
我真的使用类似以下内容:
>>> def get_player(n=1):
... player = input("What is the name of player %d? " % n)
... if not player.isalpha(): # Ask again, if non-alpha characters.
... print("Please enter a name without integers or spaces!")
... player = get_player(n)
... return player
...
>>> player1 = get_player(1)
What is the name of player 1? Bob1
Please enter a name without integers or spaces!
What is the name of player 1? Bob
>>> assert player1 == 'Bob'
>>>
这将允许你要求的球员,比如任意数:
>>> players = []
>>> try:
... num = int(input("How many players? "))
... except ValueError:
... print("Number of players must be an integer!")
... else:
... for i in range(num):
... players.append(get_player(i + 1))
...
How many players? 3
What is the name of player 1? Frodo
What is the name of player 2? Sam
What is the name of player 3? Merry
>>> assert players == ['Frodo', 'Sam', 'Merry',]
>>>
这样,如果你目前的游戏tic-tac-toe(或其他)有朝一日会成为一个有n个玩家的n维游戏场的超级井字游戏,你不必完全重写和重新调试你的player()
函数。或者您已准备好将相同的功能放入您的下一个游戏中。
您正在**'player1 = input(...)'之前测试'player1.isalpha()'** ... – jonrsharpe
[询问用户输入信息直到他们给出有效响应]( http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-response) – jonrsharpe
那么,'player1'没有被定义或分配,然后再调用' isalpha()'方法,导致这个错误。顺便说一句,你的代码不会做你认为它应该做的事。 – MasterAM