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

Python 尝试按年龄组对输入进行排序时出现“float”错误,python,Python,当使用onlinegdb检查从名为flowgorithm的程序复制的代码时,我得到了TypeError:“float”对象不可订阅 我不确定在“如果”陈述中我做错了什么,但我感觉我的逻辑很接近 def readerAge(): pass return readerAge # Main readerAge = [0] * (4) print("Please enter reader's age: ") readerAge = float(input

当使用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 打印请输入读者的年龄: readerAge=floatinput 如果读取次数<20: readerAge[0]=readerAge[0]+1 创建一个列表变量,然后用一个浮点变量覆盖它。尝试访问指定索引处的浮点值没有意义,因此引发了错误

使用单独的变量存储输入,并将readerAge或readerAge作为列表保存:

readerAge = [0] * (4)

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

您的行:readerAge=floatinput意味着readerAge不再是一个列表,而是一个单浮点。您将无法再为其编制索引。因此,您的错误消息显示TypeError:“float”对象不可订阅。您将此描述为“浮动”错误,但这没有任何意义。这是一个类型错误,这就是为什么它在前面显示TypeError。这是一个与某种类型的东西有关的错误。”“float”是一种你可能理解的类型,因为否则,你期望floatinput是什么意思?。Subscriptable的意思和它听起来的完全一样:能够对其应用一个下标。下标是当您从列表或dict中选择一个元素时所做的事情。您知道为什么当您使用float时尝试这样做可能会有问题吗?现在是学习和逐步浏览代码的好时机,并观察每行代码的内容做通过将这些中间结果与预期结果进行比较,确定您的计划与您的预期不同之处。从那里向后努力,缩小问题的原因。如果您仍然对代码的行为感到困惑,请提出一个特定的问题。转储您的代码并期望其他人为您调试它是不好的。
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())