在使用sorted()时分行打印输出

  • 本文关键字:打印 输出 sorted python
  • 更新时间 :
  • 英文 :


我有一个函数,它从CSV文件中打印排序的学生列表,但它显然是作为元组列表打印的。有没有办法我可以改变代码,使每一行得到单独打印?我试着自己添加sep="n""n",它不起作用。抱歉,代码部分是润色的。我试着在谷歌上搜索,但什么也没找到。我也不能使用任何库。

def sortowanie():
print("Wybierz opcje sortowania listy studentów:")
print("""
1. Wyświetl dane o studentach posortowane po ocenach malejąco.
2. Wyświetl studentów w porządku alfabetycznym.
3. Wyświetl dane o studentach posortowane po numerach albumów rosnąco. 
4. Wyświetl dane studenta z najwyższą oceną.
5. Wyświetl studenta z najniższą oceną.
""")
with open('students.csv') as f:
lines = f.read().splitlines()
lines = [line.split(',') for line in lines]
students = [(n, s, int(nu), float(g)) for (n, s, nu, g) in lines]
for x in students:      
try:
y = int(input("Wybrana opcja > "))
except ValueError:
print("Proszę wybrać poprawny numer.")  
if y == 1:
print(sorted(students, key=lambda s: s[3], reverse=True))
if y == 2:
print(sorted(students, key=lambda s: s[1]))
if y == 3:
print(sorted(students, key=lambda s: s[2]))
if y == 4:
print(max(students, key=lambda s: s[3]))
if y == 5:
print(min(students, key=lambda s: s[3]))
else:
break
break
sortowanie()

应该这样做:

def sortowanie():
print("Wybierz opcje sortowania listy studentów:")
print("""
1. Wyświetl dane o studentach posortowane po ocenach malejąco.
2. Wyświetl studentów w porządku alfabetycznym.
3. Wyświetl dane o studentach posortowane po numerach albumów rosnąco. 
4. Wyświetl dane studenta z najwyższą oceną.
5. Wyświetl studenta z najniższą oceną.
""")
with open('students.csv') as f:
lines = f.read().splitlines()
lines = [line.split(',') for line in lines]
students = [(n, s, int(nu), float(g)) for (n, s, nu, g) in lines]
for x in students:      
try:
y = int(input("Wybrana opcja > "))
except ValueError:
print("Proszę wybrać poprawny numer.")  
if y == 1:
[print(x) for x in sorted(students, key=lambda s: s[3], reverse=True)]
if y == 2:
[print(x) for x in sorted(students, key=lambda s: s[1])]
if y == 3:
[print(x) for x in sorted(students, key=lambda s: s[2])]
if y == 4:
print(max(students, key=lambda s: s[3]))
if y == 5:
print(min(students, key=lambda s: s[3]))
else:
break
break
sortowanie()

不打印列表,您可以使用推导式单独打印列表中的每个项目,print的默认行为是以换行符结束。

方法1

将列表(或元组)项传递给print函数作为*args和将每个项分开的参数(在我们的示例中为n)

print(*sorted(students, key=lambda s: s[3], reverse=True), sep='n')

方法2

遍历所有项并在新行中打印

for item in sorted(students, key=lambda s: s[3], reverse=True):
print(item)

相关内容

  • 没有找到相关文章

最新更新