SyntaxError第18行:TypeError:“list”对象不可调用

2024-09-30 04:37:24 发布

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

你知道为什么这个代码不允许我继续吗。我试图在codeskulptor上输入此代码,但在运行时遇到问题。 输入[索引]=classNum

类型错误:“列表”对象不可调用。

classes = [""] * (6)
input = [0] * (5)

yoga1 = 0
yoga2 = 0
child = 0
prenatal = 0
senior = 0
sIZE = 6
classes[1] = "Yoga1"
classes[2] = "Yoga2"
classes[3] = "Children's Yoga"
classes[4] = "Prenatal Yoga"
classes[5] = "Senior Yoga"
for index in range(0, 4 + 1, 1):
    print("Enter a class number")
    classNum = int(input())
    input[index] = classNum
    if input[index] == 1:
        yoga1 = yoga1 + 1
    
      

Tags: 对象代码child类型列表inputindex错误
1条回答
网友
1楼 · 发布于 2024-09-30 04:37:24

您之所以会出现此错误,是因为您已使用以下列表覆盖了名称input

input = [0] * (5)

您应该给这个变量一个不同的名称;您也不需要预先分配列表来填写它。您发布的整个代码片段可以替换为:

classes = ["", "Yoga1", "Yoga2", "Children's Yoga", "Prenatal Yoga", "Senior Yoga"]
class_numbers = [int(input("Enter a class number: ")) for _ in range(5)]
yoga1 = sum(n == 1 for n in class_numbers)

除了创建变量yoga1yoga2等来统计输入类号的所有次数之外,您还可以为所有类(从名称到计数)创建字典,字典理解如下:

class_counts = {
    name: sum(n == i for n in class_numbers) 
    for i, name in enumerate(classes) if name != ""
}

或者您可以使用collections.Counter类,如下所示:

from collections import Counter

classes = ["", "Yoga1", "Yoga2", "Children's Yoga", "Prenatal Yoga", "Senior Yoga"]
num_counts = Counter(int(input("Enter a class number: ")) for _ in range(5))
name_counts = {classes[num]: count for num, count in num_counts.items()}

在最后一个示例中,num_counts跟踪每个类号的输入次数,然后您可以将其与classes组合以创建name_counts,它跟踪相同的内容,但是根据类名而不是类号name_counts['Yoga1']告诉您1作为类号输入的次数,等等

相关问题 更多 >

    热门问题