我尝试做的是根据用户输入制作名单和成绩列表,然后显示列表以及在表格中组织列表,最后计算平均成绩
所以我希望我的脚本提示用户输入名称和成绩,然后将它们存储在列表中。此提示将重复,直到用户输入空字符串(只需在提示输入名称时按Enter键)。
我在存储列表时遇到问题,并在输入空字符串时启动打印和计算。
这是我到目前为止所得到的:
# Importing Python tabulate package
from tabulate import tabulate
# Defining functions
def getRec():
# Get a record from user input, return an empty of the user entered an empty string as input
name = str(input("Enter a name: "))
if name != "":
score = int(input("Enter the grade of " + name +": "))
return name,score
else:
return None
def addList(List,rec):
# Add a rec into the list
List = tuple(rec)
return List,rec
def putRec(List):
# Print a record in a specific format
print(List)
def printTable(List):
# Print a table with a heading
print(tabulate(List,showindex="always",headers=["Index","Name","Grade"]))
def average(List):
# Computes the average score and return the value
total = List[0][1]
avg = total/len(List)
print("Average Grade: ",avg)
# Main function
List = []
rec = []
while True:
rec = list(getRec())
List = addList(List,rec)
if rec == None:
for index in range(len(List)):
print()
putRec(List)
print()
printTable(List)
print()
average(List)
break
当我尝试启动打印和计算时,出现错误,因为我返回了“无”字样。在我的第一个功能。但如果我返回零,则列表变为零。我需要帮助尝试启动我的其他功能,并可能修复我根据输入创建列表的方式。
感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
在将记录添加到列表之前,您需要检查getRec()
是否返回None:
# Main function
List = []
rec = []
while True:
result = getRec()
print(result)
if result == None:
for index in range(len(List)):
print()
putRec(List)
print()
printTable(List)
print()
average(List)
break
else:
rec = list(result)
addList(List,rec)
您的addList
功能中也存在错误。您必须使用.append()
方法将项目添加到列表中。那么就不需要返回值。
def addList(List,rec):
# Add a rec into the list
List.append(tuple(rec))
代码应该在没有任何问题的情况下运行这2个更改,但平均成绩仍然是错误的。您需要使用for循环来计算所有等级的总和:
def average(List):
# Computes the average score and return the value
total = 0
for r in List:
total += r[1]
avg = total/len(List)
print("Average Grade: ",avg)
希望有所帮助:)
编辑:
不确定为什么使用循环打印整个表格。你根本不需要它。这是没有循环的代码:
while True:
result = getRec()
print(result)
if result == None:
print()
putRec(List)
print()
printTable(List)
print()
average(List)
break
else:
rec = list(result)
addList(List,rec)