gpt4 book ai didi

python - 类型 'NoneType' 的对象没有 len() Python

转载 作者:行者123 更新时间:2023-11-30 23:34:54 25 4
gpt4 key购买 nike

我一直在尝试Python中的字典,这样我就可以删除“魔数(Magic Number)”,因为我认为它们被引用,但我不断收到错误:“NoneType”类型的对象没有len()。它只在我的刽子手程序中偶尔发生,我不确定为什么。这是我认为它崩溃的一般区域:

animals = 'ape bear beaver cat donkey fox goat llama monkey python bunny tiger wolf'.split()
colors = 'yellow red blue green orange purple pink brown black white gold'.split()
adjectives = 'happy sad lonely cold hot ugly pretty thin fat big small tall short'.split()
names = {'animals': animals, 'colors': colors, 'adjectives': adjectives}
categories = [names['animals'],names['colors'],names['adjectives']]

def getRandomWord(wordList):
wordList = random.choice(list(names.keys()))
wordIndex = random.randint(0,len(wordList))
print(animals[wordIndex])

if(random.choice(list(names.keys())) == 'animals'):
print("The category is animals!")
return animals[wordIndex]
if(random.choice(list(names.keys())) == 'colors'):
print("The category is colors!")
return colors[wordIndex]
if(random.choice(list(names.keys())) == 'adjectives'):
print("The category is adjectives!")
return adjectives[wordIndex]

我应该怎么做才能解决我的问题?

最佳答案

现在,您正在绘制不同的类别三次。第一次将其与'animals'进行比较时;第二个为'colors';第三个是'形容词'

但是如果您绘制'colors',然后绘制'animals',然后再次绘制'colors'呢?您的三个“if”分支都不会触发。由于没有执行任何 return,因此最后有一个有效的 return None

或者,如果你的names不是你想象的那样,你可能会绘制一个None值,我猜:你没有显示整个堆栈跟踪,所以我猜测错误出现在哪里。

(此外,您的 wordIndex 可能会设置为 len(wordList),这会导致 IndexError,因为最后一个索引是 len(wordList) -1。此外,由于 wordIndex 不一定来自与类别关联的列表,因此那里也可能存在索引错误。)

我认为你可以将代码简化为:

import random
animals = 'ape bear beaver cat donkey fox goat llama monkey python bunny tiger wolf'.split()
colors = 'yellow red blue green orange purple pink brown black white gold'.split()
adjectives = 'happy sad lonely cold hot ugly pretty thin fat big small tall short'.split()
names = {'animals': animals, 'colors': colors, 'adjectives': adjectives}

def getRandomWord(words_by_category):
category = random.choice(list(words_by_category.keys()))
print("the category is", category)
wordlist = words_by_category[category]
chosen_word = random.choice(wordlist)
return chosen_word

之后我们有:

>>> getRandomWord(names)
the category is colors
'blue'
>>> getRandomWord(names)
the category is adjectives
'happy'
>>> getRandomWord(names)
the category is colors
'green'
>>> getRandomWord(names)
the category is animals
'donkey'

关于python - 类型 'NoneType' 的对象没有 len() Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com