class University:
def __init__(self, name, numberoffaculity, numberofstudent):
self.name = name
self.numberoffaculity = numberoffaculity
self.numberofstudent = numberofstudent
n = int(input()) # Number of universities that user wants to input
universities = []
for i in range(n):
name = input()
numberoffaculity = int(input())
numberofstudent = int(input())
uni = University(name, numberoffaculity, numberofstudent)
universities.append(uni)
# Insert your code below this line
# Insert your code above this line
for uni in universities:
print("%-10s %-10d %-10d"
% (uni.name, uni.numberoffaculity, uni.numberofstudent))我的目标是:程序获得数字"numberoffaculity“1或2,如果为1,则通过quicksort方法从大到小对列表进行排序和打印;如果是2E 212,则将根据E 115从E 216/code>通过E 117选择排序>E 218方法对列表进行排序和打印。
发布于 2022-06-17 14:58:49
这应该能起作用。首先,我用一个键函数添加了quick_sort和selection_sort函数。
然后我根据用户输入调用它们:
def quick_sort(array,key = lambda x:x):
if len(array) < 2:
return array
else:
pivot = array[0]
less = [i for i in array[1:] if key(i) <= key(pivot)]
greater = [i for i in array[1:] if key(i) > key(pivot)]
return quick_sort(less,key) + [pivot] + quick_sort(greater,key)
def selection_sort(lst,key = lambda x:x):
empty_lst = []
x = len(lst) - 1
while x >= 0:
for i in range(len(lst)):
if key(lst[i]) <= key(lst[0]):
lst[0], lst[i] = lst[i], lst[0]
# this part compares the number in first index and numbers after the first index.
g = lst.pop(0)
empty_lst.append(g)
x -= 1
return empty_lst
user_input = int(input())
if user_input==1:
universities = quick_sort(universities,key = lambda x:x.numberoffaculity)[::-1]
elif user_input==2:
universities = selection_sort(universities,key = lambda x:x.numberofstudent)
else:
print("invalid sort input , expected 1 or 2 and got %s"%user_input)https://stackoverflow.com/questions/72660626
复制相似问题