Python 如何对变量中的整数进行排序?
请注意,这是在Python3.3上实现的 代码如下:Python 如何对变量中的整数进行排序?,python,python-3.3,Python,Python 3.3,请注意,这是在Python3.3上实现的 代码如下: students=int(input("How many student's score do you want to sort? ")) options=input("What do you want to sort: [Names with scores] , [Scores high to low] , [Scores averages] ? ") options=options.upper() if options == ("NAM
students=int(input("How many student's score do you want to sort? "))
options=input("What do you want to sort: [Names with scores] , [Scores high to low] , [Scores averages] ? ")
options=options.upper()
if options == ("NAMES WITH SCORES") or options == ("NAME WITH SCORE") or options == ("NAME WITH SCORES") or options == ("NAMES WITH SCORE"):
a=[]
for i in range(0,students):
name=input("Enter your scores and name: ")
a.append(name)
a.sort()
print("Here are the students scores listed alphabetically")
print(a)
if options == ("SCORES HIGH TO LOW") or options == ("SCORE HIGH TO LOW"):
b=[]
number=0
for i in range(0,students):
number = number+1
print("Student "+str(number))
name2=int(input("Enter your first score: "))
name3=int(input("Enter your second score: "))
name4=int(input("Enter your third score: "))
b.append(name2)
b.append(name3)
b.append(name4)
final_score = name2 + name3 + name4
print (final_score)
b.sort(final_score)
print("Student "+str(number) )
print(b)
>>>
How many student's score do you want to sort? 2
What do you want to sort: [Names with scores] , [Scores high to low] , [Scores averages] ? scores high to low
Student 1
Enter your first score: 1
Enter your second score: 2
Enter your third score: 3
Student 2
Enter your first score: 3
Enter your second score: 5
Enter your third score: 6
14
Traceback (most recent call last):
File "H:\GCSE Computing\Task 3\Task 3.py", line 31, in <module>
b.sort(final_score)
TypeError: must use keyword argument for key function
>>>
下面是代码的结果:
students=int(input("How many student's score do you want to sort? "))
options=input("What do you want to sort: [Names with scores] , [Scores high to low] , [Scores averages] ? ")
options=options.upper()
if options == ("NAMES WITH SCORES") or options == ("NAME WITH SCORE") or options == ("NAME WITH SCORES") or options == ("NAMES WITH SCORE"):
a=[]
for i in range(0,students):
name=input("Enter your scores and name: ")
a.append(name)
a.sort()
print("Here are the students scores listed alphabetically")
print(a)
if options == ("SCORES HIGH TO LOW") or options == ("SCORE HIGH TO LOW"):
b=[]
number=0
for i in range(0,students):
number = number+1
print("Student "+str(number))
name2=int(input("Enter your first score: "))
name3=int(input("Enter your second score: "))
name4=int(input("Enter your third score: "))
b.append(name2)
b.append(name3)
b.append(name4)
final_score = name2 + name3 + name4
print (final_score)
b.sort(final_score)
print("Student "+str(number) )
print(b)
>>>
How many student's score do you want to sort? 2
What do you want to sort: [Names with scores] , [Scores high to low] , [Scores averages] ? scores high to low
Student 1
Enter your first score: 1
Enter your second score: 2
Enter your third score: 3
Student 2
Enter your first score: 3
Enter your second score: 5
Enter your third score: 6
14
Traceback (most recent call last):
File "H:\GCSE Computing\Task 3\Task 3.py", line 31, in <module>
b.sort(final_score)
TypeError: must use keyword argument for key function
>>>
>
你想对多少学生的分数进行排序?2.
您希望对以下内容进行排序:[带分数的名称],[分数从高到低],[分数平均值]?分数由高到低
学生1
输入你的第一个分数:1
输入你的第二个分数:2
输入你的第三个分数:3
学生2
输入你的第一个分数:3
输入你的第二个分数:5
输入你的第三个分数:6
14
回溯(最近一次呼叫最后一次):
文件“H:\GCSE Computing\Task 3\Task 3.py”,第31行,在
b、 排序(最终评分)
TypeError:必须为键函数使用关键字参数
>>>
我想让代码把学生的三个分数相加,并用相应的名字对学生的总分进行排序
例如:
(2名学生)
学生1
- 得分1-2
- 比分2-4
- 得分3-7
- 得分1-5
- 比分2比1
- 比分3-4
“学生1-15,学生2-10”传递函数进行排序时,需要使用语法
key=final\u score
:
b.排序(关键=最终分数)
但是排序方法要求将函数
传入而不是变量,因此通过添加name2+name3+name4
传递int
值是行不通的
如果您只想对分数列表进行排序,只需调用b.sort()
您应该使用defautdict并使用每个名称作为键,并将所有分数存储在列表中:
from collections import defaultdict
d = defaultdict(list)
for _ in range(students):
name = input("Enter your name: ")
scores = input("Enter your scores separated by a space: "
# add all scores for the user to the list
d[name].extend(map(int,scores.split()))
要显示平均值、总值和最大值,它是微不足道的:
# from statistics import mean will work for python 3.4
for k,v in d.items():
print("Scores total for {} is {}".format(k,sum(v)))
print("Scores average for {} is {}".format(k,sum(v)/len(v))) # mean(v) for python 3,4
print("Highest score for {} is {}".format(k, max(v)))
按最高用户总分排序的打印:
print("The top scoring students from highest to lowest are:")
for k,v in sorted(d.items(),key=lambda x:sum(x[1]),reverse=True):
print("{} : {}".format(k,sum(v)))
现在您有了一个dict,其中学生姓名是键,每个学生的分数都存储在一个列表中
实际上,您应该添加一个try/except来获取用户输入,并验证其格式是否正确。不幸的是,这不起作用。结果如下:你想对多少学生的分数进行排序?2您想要排序什么:[带分数的名字],[分数从高到低],[分数平均值]?分数从高到低你叫什么名字?测试输入你的第一个分数:1输入你的第二个分数:2输入你的第三个分数:3你的名字测试2输入你的第一个分数:3输入你的第二个分数:4输入你的第三个分数:5 12回溯(最后一次调用):文件“H:\GCSE Computing\Task 3\Task 3.py”,第31行,b.sort(key=final_score)TypeError:“int”对象不可调用>>@ThifyanRavinehru,是的,您需要传递一个函数作为键,python如何使用int进行排序?因此,不可能执行我想执行的操作(对int变量排序)?有没有一种方法可以不使用变量来执行此操作,因为我只希望将3个分数相加,并对总数进行排序。