Python 尝试按年龄组对输入进行排序时出现“float”错误
当使用onlinegdb检查从名为flowgorithm的程序复制的代码时,我得到了TypeError:“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
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())