import csv
import operator
form = input('If you would like to view form 1 please enter "1".If you would like to view form 2 please enter "2" and If you would like to view form 3 please enter "3"')
if form == "1":
sort = input('If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
if sort == "a":
readfile = csv.reader(open("Form1.csv"), delimiter=",")
sortedfile = sorted(readfile, key=operator.itemgetter(0))
file = open("Form1.csv", "a")
for eachline in sortedfile:
eachline.sort()
print(eachline)
file.close()
if sort == 'b':
file = open('Form1.csv')
readfile = csv.reader(file)
for line in readfile:
integers = (line[0:4])
integers.sort(reverse = True)
print(integers)
averages = []
if sort == 'c':
file = open('Form1.csv')
readfile = csv.reader(file)
for line in readfile:
values = (line[2:4])
values = list(map(int, values))
average = (sum(values)/len(values))
averages.append(average)
averages.sort(reverse = True)
print(averages)
elif form == "2":
sort = input('If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
if sort == "a":
readfile = csv.reader(open("Form2.csv"), delimiter=",")
sortedfile = sorted(readfile, key=operator.itemgetter(0))
file = open("Form2.csv", "a")
for eachline in sortedfile:
eachline.sort()
print(eachline)
file.close()
if sort == 'b':
file = open('Form2.csv')
readfile = csv.reader(file)
for line in readfile:
integers = (line[0:4])
integers.sort(reverse = True)
print(integers)
averages = []
if sort == 'c':
file = open('Form2.csv')
readfile = csv.reader(file)
for line in readfile:
values = (line[2:4])
values = list(map(int, values))
average = (sum(values)/len(values))
averages.append(average)
averages.sort(reverse = True)
print(averages)
elif form == "3":
sort = input('If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
if sort == "a":
readfile = csv.reader(open("Form3.csv"), delimiter=",")
sortedfile = sorted(readfile, key=operator.itemgetter(0))
file = open("Form3.csv", "a")
for eachline in sortedfile:
eachline.sort()
print(eachline)
file.close()
if sort == 'b':
file = open('Form3.csv')
readfile = csv.reader(file)
for line in readfile:
integers = (line[0:4])
integers.sort(reverse = True)
print(integers)
averages = []
if sort == 'c':
file = open('Form3.csv')
readfile = csv.reader(file)
for line in readfile:
values = (line[2:4])
values = list(map(int, values))
average = (sum(values)/len(values))
averages.append(average)
averages.sort(reverse = True)
print(averages)
请你告诉我怎样才能解决这个问题。谢谢。当我给出第一个问题的响应1并给出第二个问题的响应时,我还有另一个问题,它打印出所有来自文件的名称,但它只是从表单1输入名称。
答案 0 :(得分:3)
如果表格不是" 1"你不能在下一个之前定义排序
if form == "1":
sort = input('If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
if sort == "a": # not defined
如果要排序在if语句之前设置默认值:
sort = "some default"
或嵌套if's
:
if form == "1":
sort = input('If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
if sort == "a":
....
您可能只需要验证用户做出有效选择,然后再继续:
while True:
form = input('If you would like to view form 1 please enter "1".If you would like to view form 2 please enter "2" and If you would like to view form 3 please enter "3"')
if form not in {"1","2","3"}:
print("Invalid choice")
else:
break
sort也不能超过一个值,所以请使用if / elif' s:
if sort == "a":
....
elif sort == "b":
....
你可以删除很多重复的代码,在每个块的一个地方打开文件,你应该使用elif&if并在if if ==的
中嵌入if / elifs的排序averages = []
while True:
form = input(
'If you would like to view form 1 please enter "1".If you would like to view form 2 please enter "2" and If you would like to view form 3 please enter "3"')
if form not in {"1", "2", "3"}:
print("Invalid choice")
else:
break
if form == "1":
sort = input(
'If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
with open("Form1.csv") as f:
read_file = csv.reader(f)
if sort == "a":
sorted_file = sorted(read_file)
for each_line in sorted_file:
each_line.sort()
print(each_line)
elif sort == 'b':
for line in read_file:
integers = (line[0:4])
integers.sort(reverse=True)
print(integers)
elif sort == 'c':
for line in read_file:
values = (line[2:4])
values = list(map(int, values))
average = (sum(values) / len(values))
averages.append(average)
averages.sort(reverse=True)
print(averages)
elif form == "2":
sort = input('If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
with open('Form2.csv') as f:
read_file = csv.reader(f)
if sort == "a":
sorted_file = sorted(read_file)
for each_line in sorted_file:
each_line.sort()
print(each_line)
elif sort == 'b':
for line in read_file:
integers = (line[0:4])
integers.sort(reverse = True)
print(integers)
elif sort == 'c':
for line in read_file:
values = (line[2:4])
values = list(map(int, values))
average = (sum(values)/len(values))
averages.append(average)
averages.sort(reverse = True)
print(averages)
elif form == "3":
sort = input(
'If you would like the names sorted alphabetically enter "a".If you would like the scores sorted from highest to lowesr please enter "b" and If you would like the average scores sorted from highest to lowest please enter "c"')
with open("Form3.csv") as f:
read_file = csv.reader(f)
if sort == "a":
sorted_file = sorted(read_file)
for each_line in sorted_file:
each_line.sort()
print(each_line)
elif sort == 'b':
for line in read_file:
integers = (line[0:4])
integers.sort(reverse=True)
print(integers)
elif sort == 'c':
for line in read_file:
values = (line[2:4])
values = list(map(int, values))
average = (sum(values) / len(values))
averages.append(average)
averages.sort(reverse=True)
print(averages)
您可能还希望将表单while循环逻辑应用于每种排序,使用带有while循环的函数来确保用户选择正确的选项。