我正在尝试用Python创建一个摇滚,纸张,剪刀游戏。我是新手所以请原谅看似简单的问题。我正在创建一个可以运行用户选择的功能,并将其与计算机的随机选择进行比较。我希望结果显示为打印语句,但我一直得到None作为反馈。还请注意我知道有更多可能的结果,到目前为止,我只测试结果,如果用户选择"摇滚"。
以下是代码部分:
import random
rkprsr = ['rock', 'paper', 'scissors']
random.shuffle(rkprsr)
def gameplay (user_choice):
dealer_choice = rkprsr.pop()
if user_choice == 'rock' and dealer_choice == 'paper':
print ('You selected rock and I selected paper. My paper covers your rock. You lose.')
elif user_choice == 'rock' and dealer_choice == 'scissors':
print ('You selected rock and I selected scissors. Your rock crushes my scissors. You win!')
elif user_choice == 'rock' and dealer_choice == 'rock':
print ('You selected rock and I selected rock. Stalemate. We tied.')
return
user_choice = input ('Please type rock, paper, or scissors:')
print('')
print('')
user_choice = user_choice.lower
print (gameplay(user_choice))
答案 0 :(得分:2)
user_choice = user_choice.lower
print (gameplay(user_choice))
我看到两个问题。首先,lower
需要括号,否则user_choice
将是一个函数对象而不是一个字符串。这就是为什么即使用户输入“摇滚”,你的if
条件都没有通过。其次,打印gameplay
的结果将始终打印None
,因为当您有一个return
语句后面没有任何内容时,会返回返回的内容。 (或者如果你根本没有退货声明)。
user_choice = user_choice.lower()
gameplay(user_choice)
答案 1 :(得分:0)
您有一个空的return
语句,它将返回None
。所有打印都在函数内部完成,因此您不需要打印gameplay(user_choice)
,也不需要在函数中使用return
语句。简单地称之为它应该做你期望的。 None
是该函数调用的返回值,因此打印出来。
编辑:正如其他海报所注意到的那样,user_choice.lower
需要括号正常运作
答案 2 :(得分:0)
您可能正在尝试执行以下操作:
def gameplay (user_choice):
dealer_choice = rkprsr.pop()
if user_choice == 'rock' and dealer_choice == 'paper':
return 'You selected rock and I selected paper. My paper covers your rock. You lose.'
elif user_choice == 'rock' and dealer_choice == 'scissors':
return 'You selected rock and I selected scissors. Your rock crushes my scissors. You win!'
elif user_choice == 'rock' and dealer_choice == 'rock':
return 'You selected rock and I selected rock. Stalemate. We tied.'
函数gameplay
将返回一个字符串,如果您愿意,可以在外部范围内打印。