函数始终返回none而不是print语句

时间:2015-08-20 12:30:40

标签: python function printing nonetype

我正在尝试用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))

3 个答案:

答案 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返回一个字符串,如果您愿意,可以在外部范围内打印。