函数总是返回none而不是printed Statemens

2024-10-01 02:25:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python创建一个石头、布、剪刀的游戏。我是一个新手,所以请原谅这个看似简单的问题。我正在创建一个函数,可以通过用户的选择运行,并将其与计算机的随机选择进行比较。我想结果显示为打印声明,但我一直没有得到任何反馈。请注意,我知道还有更多潜在的结果,到目前为止,我只测试结果,如果用户选择“岩石”。你知道吗

以下是代码部分:

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))

Tags: and用户yourandompaperprintselectedscissors
3条回答

您有一个空的return语句,它将返回None。所有打印都在函数本身内完成,因此不需要打印gameplay(user_choice),也不需要在函数中有return语句。简单地说,它应该做你所期望的。None是该函数调用的返回值,因此它被打印出来。你知道吗

编辑:正如其他海报所注意到的,user_choice.lower需要括号才能正常工作

您可能正在尝试执行以下操作:

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返回一个字符串,如果您愿意,可以在外部作用域中打印该字符串。你知道吗

user_choice = user_choice.lower

print (gameplay(user_choice))

我看到两个问题。首先,lower需要括号,否则user_choice将是函数对象而不是字符串。这就是为什么即使用户输入“rock”,也没有任何if条件通过。第二,打印gameplay的结果将始终打印None,因为这是在return语句后面没有任何内容时返回的结果。(或者如果你根本没有return语句)。你知道吗

user_choice = user_choice.lower()

gameplay(user_choice)

相关问题 更多 >