我在此布局中设置了一个文本文件:
格雷格,计算机科学,硬,5
Alex,计算机科学,中等,2
菲奥娜,数学,简单,0
Cassie,数学,中等,5
亚历,数学,中,1
在我的程序中,我希望用户能够选择某个名称并查看其结果。我的代码如下所示:
name = input("Enter name: ")
for each in file:
each = each.split(",")
realName = each[0]
subject = each[1]
difficulty = each[2]
score = each[3]
if name == realName:
print(subject, difficulty, score)
break
else:
print()
print("Invalid name.")
name = input("Re-enter your name: ")
但有些事情是错的,我无法弄清楚该做什么:
有没有人解决这些问题?
答案 0 :(得分:0)
如果您要反复查询文件,我建议您将数据预先加载到字典中,并在需要时打印数据。像这样:
data = {}
with open('file.txt', 'r') as file:
for line in file:
realName, subject, difficulty, score = each.split(',')
data.setdefault(realName, []).append((subject, difficulty, score))
while True:
name = input('>>> ')
data.get(name, 'Invalid Name')
这解决了第一和第二个问题。如果您只想在输入第一个有效名称后中断,则可以查询dict.get
的返回值:
while True:
name = input('>>> ')
result = data.get(name)
if result:
print(result)
break
print('Invalid name')
这解决了问题三。
答案 1 :(得分:0)
您最好使用csv
module,因为您的文件语法是简单的CSV。
然后你可以遍历行(每行都是一个值数组)。
import csv
def parse_csv_file(csv_file, operation, value, index):
with open(csv_file, newline='') as file:
reader = csv.reader(file, delimiter=',',
quotechar='|')
return operation(reader,
value, index)
def find_first_row(csv_reader, value, index):
for row in csv_reader:
if row[index] == value:
return row
return None
def main():
query = input('Enter a name: ')
result = parse_csv_file('file.csv',
find_first_row,
query, 0)
if result:
print(result)
else:
print('Nothing found!')
main()