词典写作和硬编码条目

2024-05-23 14:38:27 发布

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

TypeError:无法将“NoneType”对象隐式转换为str。这就是当我试图用函数将一个条目硬编码到字典中时所遇到的错误。让用户输入可以工作,并将其放入词典中,但这行不通。我搜索过其他的错误,比如这个(意思是打字错误),但是我什么也没找到。其他两个(Thisthis)出现此错误的条目与我无关。在

所以。我试着把awerexing和BeingAwesome设为一个打印函数,以为它可以正确地打印到成就词典中,因为只要把awerestitung和BeingAwesome放在那里,就会导致它说需要定义它。然后出现了这个错误。我觉得应该行得通,但不行,我也不知道为什么。有人能帮我吗?在

    achievements = {}
    AweInspiring = print()
    BeingAwesome = print()

    def dovar():
        global achievements
        print('Type in either \'achievement get\' or \'view achievements.\'')
        achieve = input()
        if achieve == 'view achievements':
            print('Achievements')
            for x in achievements.keys():
                print('Achievement Name: ' + x + '\tFor: ' + achievements[x])
        elif achieve == 'achievement get':
            achieveget()
        elif achieve == 'achieve':
            hardachieve()

    def achieveget():
        print('Add Achievement')
        achievename = input('Name of achievement earned: ')
        achievedesc = input('How was the achievement earned: ')
        achievements[achievename] = achievedesc
        dovarloop()

    def hardachieve():
        achievename = AweInspiring
        achievedesc = BeingAwesome
        achievements[achievename] = achievedesc
        dovar()

    def dovarloop():
        dovar()

    dovar()

Tags: ininputdef错误条目词典printachievements
2条回答

在闲暇时编辑它,添加了一个成就,最后为自己感到骄傲,因为它对我来说很好:

 achievements = {}

def dovar():
    global achievements
    print('Type in either \'achievement get\' or \'view achievements.\'')
    achieve = raw_input()
    if achieve == 'view achievements':
        print('Achievements')
        for x in achievements.keys():
            print('Achievement Name: ' + x + '\tFor: ' + achievements[x])
   elif achieve == 'achievement get':
       achieveget()
   elif achieve == 'achieve':
       hardachieve()

def achieveget():
    print('Add Achievement')
    achievename = raw_input('Name of achievement earned: ')
    achievedesc = raw_input('How was the achievement earned: ')
    achievements[achievename] = achievedesc
    dovarloop()

 def hardachieve():
    global achievments
    achievename = "got a cat"
    achievedesc = "found one"
    achievements[achievename] = achievedesc
    #dovar()

def dovarloop():
    dovar()

dovar()

我的对话:

================================ RESTART ================================

^{pr2}$

print()不返回任何内容(默认情况下,它返回None)。因此,当您执行achievements[achievename] = achievedesc操作时,python实际上是这样做的:

{None:None}

然后你要做的是:

^{pr2}$

其中x是键Noneachievements[x]是值(也是None

但是不能连接字符串和NoneType(因此会出现错误)。在


所以,在最简单形式的代码中(例如示例),您正在尝试这样做:

print('Hello' + None)

要解决此问题,可以使AweInspiringBeingAwesome为空字符串:

AweInspiring = ''
BeingAwesome = ''

相关问题 更多 >