我有一个函数,它从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)