函数不会返回值

2024-05-18 10:07:52 发布

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

def key(keyC, keyG, keyE):
    keyC = ('em','f','g','am','c')
    keyG = ('g','c','d','em','am')
    keyE = ('a','b','e')
    key = input("What key would you like to play in")
    print "I will display chords in that key"
    if input == 'c':
        return(random.choice(keyC))
    elif input == 'g':
        return(random.choice(keyG))
    elif input == 'e':
        return(random.choice(keyE))
    else:
        return "Pick another key"

我是新来的,我正在写我的代码,这看起来很有趣。任何意见或建议都会有帮助。在


Tags: keyininputreturndefrandomamwhat
2条回答

您应该将字符串与key进行比较:

if key == 'c':
...
elif key == 'g':
...
elif key == 'e':

key是保存用户输入的内容。input只是用于获取输入的内置函数:

^{pr2}$

但是请注意,上面给出的演示是用python3.x编写的,如果您使用的是python2.x,那么应该使用raw_input,而不是{}。python2.xinput函数将其输入计算为真正的Python代码,并将为您输入的任何未定义名称引发一个NameError。在

一些更正:

  1. 使用key,作为iCodez的轮廓
  2. import random放在函数定义上方。否则,使用它的程序将询问random在哪里。在
  3. 使用raw_input("What key would you like to play in")代替input。如果我在提示后输入cinput将查找名为c的变量并打印其值。如果该变量不存在,并且抛出错误。raw_input只需将输入转换为字符串。在
  4. 如果在函数中将keyCkeyG、和{}定义为常量,那么将它们作为函数的参数是不必要的(而且什么也不做)。你可以把它们作为可选参数,也可以完全忽略这些参数。在

最终代码:

import random
def key(keyC=('em','f','g','am','c'),keyG=('g','c','d','em','am'),keyE=('a','b','e')): 
    #keyC, keyG, keyE as optional arguments

    key = raw_input("What key would you like to play in")
    print "I will display chords in that key"

    if key == 'c':
        return(random.choice(keyC))
    elif key == 'g':
        return(random.choice(keyG))
    elif key == 'e':
        return(random.choice(keyE))
    else:
        return "Pick another key"

另请参见this answer。在

编辑:根据twasbrillig,此解决方案采用Python2.x而不是Python3。我使用的是python2.7,它仍然很常见。在

相关问题 更多 >