有没有办法修复这个python代码?
10年级-11年级A453算术测验- 据我所知,所有这些都是正确的。我把这个留在这里只是为了有一些背景有没有办法修复这个python代码?,python,Python,10年级-11年级A453算术测验- 据我所知,所有这些都是正确的。我把这个留在这里只是为了有一些背景 file = open def menu(): entry = False while entry == False: print(' ***************************') print(' * Arithmetic Quiz Scores! *') print('
file = open
def menu():
entry = False
while entry == False:
print(' ***************************')
print(' * Arithmetic Quiz Scores! *')
print(' ***************************')
print('')
print('')
print('1. Alphabetic Order (Highest)')
print('')
print('2. Highest - Lowest')
print('')
print('3. Average (Highest-Lowest)')
print('')
print('4. Quit')
print('')
choice=input('What do you want to do - 1, 2, 3, 4? ')
if choice == '1':
print("")
alphabetic_order()
entry = False
elif choice == '2':
print("")
highest_lowest()
entry = False
elif choice == '3':
print("")
average()
entry = False
elif choice == '4':
print("Goodbye")
entry = True
else:
print("")
print("Im Sorry But That Is Not An Option, Please Choose Again!")
input("Press Enter!")
print("")
def alphabetic_order():
inputFile = open("Names.txt", 'r')
lineList = inputFile.readlines()
lineList.sort()
for line in lineList:
line = line.strip()
parts = line.split(" - ")
name = parts[0]
score1 = parts[1]
score2 = parts[2]
score3 = parts[3]
alphabetical=(max(score1, score2, score3))
print(" "+ name + " " + alphabetical)
print("")
inputFile.close()
这是文件Names.txt
的内容:
Tim - 5 - 6 - 7
Chloe - 6 - 3 - 9
Zack - 9 - 10 - 8
Bob - 7 - 4 - 6
Bo - 8 - 9 - 9
Adam - 8 - 4 - 5
Joe - 3 - 2 - 5
Zoey - 6 - 6 - 6
Larry - 7 - 3 - 3
Mary - 5 - 6 - 9
[FIXED]在这一点上,代码并没有将分数从高到低排序,而是将大多数分数从低到高输出。我相信,对于其中一个分数为10的分数,代码认为它只是1。[固定]
def highest_lowest():
inputFile = open("Names.txt", 'r')
lineList = inputFile.readlines()
lineList.sort()
for line in lineList:
line = line.strip()
parts = line.split(" - ")
name = parts[0]
score1 = int(parts[1])
score2 = int(parts[2])
score3 = int(parts[3])
total=(score1, score2, score3)
highestlowest=sorted(total, key=int, reverse=True)
print(" "+ name + " " + str(highestlowest))
print("")
inputFile.close()
[帮助]在这一部分,代码应该根据学生的平均水平(从高到低)对他们进行排序,但它没有这样做。[帮助]
def average():
inputFile = open("names.txt", "r")
lineList = inputFile.readlines()
lineList.sort()
for line in lineList:
line = line.strip()
parts = line.split(" - ")
name = parts[0]
score1 = parts[1]
score2 = parts[2]
score3 = parts[3]
total= int(score1) + int(score2) + int(score3)
average_= int(total) /3
print (" "+ name + " " + str(round(average_)))
print("")
inputFile.close()
menu()
你能帮我理解为什么这些数字没有按我期望的那样排序吗?如果我不应该这样提问,我很抱歉,我是新来的。关于你的问题:
你能帮帮我吗
我会说,是的,我能
对于您尚未提出的问题:
为什么我的代码没有按预期对数字进行排序
答案是因为你的数字仍然是字符串。您需要将它们转换为数字,即:
score1 = int(parts[1])
关于代码中的主要问题是,您试图对字符串进行排序,并期望得到与数字相同的结果 在这两种方法中,都加载文件
inputFile = open("names.txt", "r")
然后你读台词
lineList = inputFile.readlines()
现在您有了一个包含字符串的列表。排序算法然后比较字符串,而不是数字
对于平均数,你应该试着计算每个人的平均数,然后按平均数排序
问候语问题在于字符串与整数的排序方式不同 这可能看起来很奇怪,但事实证明,以非常不同的方式对字符串和整数进行排序是合乎逻辑的。特别是字符串通常按顺序排列。例如:
“ab”<“b”
和类似的“25”<“6”
在Python中,您可以直接键入这些内容以查看它们的解释方式:
"ab" < "b"
#prints True
"25" < "6"
#prints True
25 < 6
#prints False
“ab”<“b”
#打印正确
"25" < "6"
#打印正确
25 < 6
#打印错误
@Ocean,我认为snamecharmerb暗示了“10”
,因为它们是作为字符串进行比较的,python默认将从低到高排序,您可以通过指定lineList.sort(reverse=True)来颠倒顺序
我该怎么做呢?我不会给你确切的代码,因为这对我来说是一个学习练习。试着想象一下你的程序需要做什么。首先,您需要每个玩家的所有平均值。然后你需要对它们进行排序,最后你需要按照正确的顺序打印出来。请记住,你需要一个名称和平均值之间的链接,这样你就可以用每个名称打印出正确的平均值。这是课程作业,几天后到期。