尝试按年龄组对输入进行排序时出现"float"错误



当使用onlinegdb检查从名为flowgorithm的程序复制的代码时,我会得到"TypeError:"float"对象不可下标;。

我不确定我在"如果"语句中做错了什么,但我觉得我的逻辑很接近。

def readerAge():
pass

return readerAge
# Main
readerAge = [0] * (4)
print("Please enter reader's age: ")
readerAge = float(input())
if readerAge < 20:
readerAge[0] = readerAge[0] + 1
else:
if readerAge >= 20 and readerAge <= 29:
readerAge[1] = readerAge[1] + 1
else:
if readerAge >= 30 and readerAge <= 39:
readerAge[2] = readerAge[2] + 1
else:
if readerAge >= 40 and readerAge <= 49:
readerAge[3] = readerAge[3] + 1
else:
if readerAge >= 50:
readerAge[4] = readerAge[4] + 1
print("Please enter reader's gender (M/F/NB): ")
readerGender = float(input())
print("Please enter the reader's marriage status (Single/Married/Divorced): ")
readerMarigStat = float(input())
print("Please enter reader's yearly income: ")
yearlyIncome = float(input())
print("Demographic analysis")
print("Number of readers under the age of 20: " + str(readerAge[0]))
print("Number of readers between 20-29: " + str(readerAge[1]))
print("Number of readers between 30-39: " + str(readerAge[2]))
print("Number of readers between 40-49: " + str(readerAge[3]))
print("Number of readers over the age of 50: " + str(readerAge[4]))

问题就在这里:

readerAge = [0] * (4)
print("Please enter reader's age: ")
readerAge = float(input())
if readerAge < 20:
readerAge[0] = readerAge[0] + 1

您可以创建一个列表变量,然后用浮点变量覆盖它。(尝试访问指定索引处的浮点值没有意义,因此出现了错误(

使用一个单独的变量来存储输入,并将readerAge(反之亦然(作为一个列表:

readerAge = [0] * (4)
print("Please enter reader's age: ")
age = float(input())
if age < 20:
readerAge[0] = readerAge[0] + 1

编辑:我没有查看代码的末尾,这与问题没有直接关系,但您也将字符串输入转换为浮点值,这也会引发错误。如果希望输入实际单词而不是数字,只需使用不带float()input()即可。

print("Please enter reader's gender (M/F/NB): ")
readerGender = float(input())
print("Please enter the reader's marriage status (Single/Married/Divorced): ")
readerMarigStat = float(input())
print("Please enter reader's yearly income: ")
yearlyIncome = float(input())