所以我有一个正在进行的程序,它会从文件中获取一堆数字(在这种情况下,它们是测试的分数),将它们添加到数组中,然后通过降序或升序对它们进行排序订购。我已设法使用以下代码
来实现此功能score_array = []
def opening_file():
with open('scores.txt', newline='') as infile:
reader = csv.reader(infile)
for row in reader:
score_array.extend(map(int, row))
def sorting_int():
print ("How would you like to sort the scores? Press 1 for descending and 2 for ascending order..")
userinput = int(input())
if userinput == 1:
score_array.sort(reverse=True)
if userinput == 2:
score_array.sort()
print (score_array)
opening_file()
sorting_int()
在我的'scores.txt'文件中,我有以下数字10,0,6,3,7,4,它们都根据用户选择的内容进行排序。但是,我希望能够添加学生的名字。因此,例如,将“Alex”添加到文本文件中,它将跳过第一个项目(即学生的姓名),而不是像往常一样对数字进行排序。我想举个例子: 亚历克斯,10,0,6,3,7,4 并按降序/升序排序数字。
我将如何做这样的事情?我已经尝试过谷歌寻求解决方案,但我担心找到一个没有运气。
答案 0 :(得分:1)
有很多方法可以实现这一点,快速的方法是使用pop / insert方法在排序之前操作数组,如下所示:
a = ["corey", 1, 66.25, 333, 333, 1234.5]
tmp = a.pop(0)
# array with name removed, sort array at this point
print a
# add name back
a.insert(0,tmp)
print a
答案 1 :(得分:1)
您可以修改行解析器以忽略未通过测试的单元格 - 在这种情况下为isdigit:
for row in reader:
score_array.extend(map(int, (v for v in row if v.isdigit())))