CIE IGCSE预释放材料

2024-04-20 08:41:21 发布

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

CIE IGCSE预发布材料已经发出,它要求通常在15岁的儿童在1个月内完成庞大的编程任务,这并不总是可能的,因为要求的水平有时太高。今年的任务是:

一位农民记录了一群奶牛的产奶量。在

每头牛都有一个唯一的3位数字的身份代码。在

每头牛一周七天,每天挤两次奶。在

每头奶牛产奶量以升为单位记录,每次产奶量精确到小数点后一位(产量)。在

牧群的大小是固定的。在

在周末,计算一周内每头奶牛的总产量和平均产量。在

农夫认出了那个星期产奶最多的奶牛。在

农场主还指出,任何奶牛产奶量少于12升,在4天或更多的一周。在

需要一个程序来记录每头奶牛每次产奶量,计算牛群的每周总产奶量和一周内每头奶牛的平均产奶量。在

该计划还必须确定当周产量最好的奶牛,并在该周4天或4天以上找出产奶量低于12升的奶牛。在

编写并测试一个或多个农夫。你的程序必须包括输入数据的适当提示。在

错误信息和其他输出需要清晰易懂地列出。在

所有变量、常量和其他标识符必须具有有意义的名称

你需要完成这三项任务。每项任务都必须经过充分的测试。在

任务1–记录产量

为任务1编写一个程序,记录一周的产奶量。该程序记录并存储每次奶牛挤奶时的识别码和产量。在

任务2–计算统计数据

使用您在任务1中记录的数据,计算并显示牛群每周的总奶量,精确到while升。计算并显示一周内每头奶牛的平均产量,精确到整升。在

任务3——找出产奶量低的奶牛和最高产的奶牛。 扩展任务2,识别并显示产奶量最多的奶牛的身份代码号和周产量。同时,识别并显示一周内产奶量少于12公升的奶牛的身份代码。在

我试图用Python解决它,这就是我所达到的效果

# Recording the yield
Cow = []
Yield = []
Cows = int(input("How many cows are in the herd?  "))
Day = 0     #to configure the milking
for i in range(14):
if i%2 == 1:
    Milking = "Second"
else:
    Milking = "First"
    Day += 1
print("Day ", Day, "; ", Milking, " milking")
for i in range(Cows):
    while True:
        try:
            Code = int(input("Enter code: "))
            if Code > 999 or Code < 100:
                raise ValueError
        except ValueError:
            print("Enter a 3-digit code please")
        else:
            Cow.append(Code)
            while True:
                try:
                    Y = float(input("Enter volume of milk in litres: "))    #A range check for yield can be added
                except ValueError:
                    print("Please enter a positive number")
                else :
                    Yield.append(Y)
                    break
            print(Yield)
            print(Cow)
            break
Total = 0 #Finding the Total and Average
for i in range(len(Yield)):
Total += Yield[i]
Average = Total/Cows
round(Total, 0)
round(Average, 0)
print("Total weekly volume of milk: ", int(Total), " litres")
print("Average yield per cow: ", int(Average), " litres")
print(len(Cow))

#Identifying most productive and low producing cows
Total = []
LessMilk = ""
YieldOnDay = 0
Milking = 0
for j in range(Cows):
T = 0
Days = 0
Cow = Cow[j]                    #A cow chosen
for i in range(len(Cow)):
    if Cow[i] == Cow:
        T += Yield[i]         #Incrementing the total for each cow
        YieldOnDay += Yield[i]
        Milking += 1
        if Milking == 2:            # 2 since checking for days, not `milkings
            if YieldOnDay < 12: #Checking if yield is less than 12 Days += 1 Milking = 0 YieldOnDay = 0 if Days > 3:        #Low yield for 4 or more days
                LessMilk = LessMilk + str(Cow[j]) + ", "
Total.append(T)

print(Total)
for i in range(Cows):
if Total[i] == max(Total):
    print("Cow ", Cow[i], " has the highest yield of ", Total[i], " litres")

print("Cows which produced less than 12 litres of milk: " , LessMilk)

如您所见,我无法解决唯一代码问题和平均每头奶牛(上面以粗体显示)。我最后一部分的代码不起作用。它显示在我到达交互shell的中途之后

^{pr2}$

我不知道为什么。我试过了一切,但还是不行。在

我想根据牛群中奶牛的数量来做一个列表,我不知道怎么做的。 如果我使用数组而不是列表会更好吗?Python是否是这个任务的好选择?在

非常感谢您的阅读,感谢您对世界各地IGCSE学生的关心考虑。你的我和全世界所有的IGCSE学生都会非常感谢你的帮助。在


Tags: theinforif记录rangetotalprint
1条回答
网友
1楼 · 发布于 2024-04-20 08:41:21

这可能太迟了,但就在错误行之前,有一行Cow = Cow[j],它会擦除整个Cow列表,并用一个cow替换它。这就是为什么下一行会产生一个错误-一个cow不是一个列表,所以您不能得到它的len。为了将来的参考,请将变量名弄清楚,以免混淆它们。例如,可以将Cows重命名为n_cows(表示“奶牛数量”),也可以将Cow重命名为cows_list。祝你的IGCSE好运!在

PS:另外,保持问题简短有助于更快地找到答案。只需简单描述一下您的问题就足够了-您不需要发布整个项目。

相关问题 更多 >