#python #file #file-io
Вопрос:
Я программист-самоучка и пытаюсь создать систему продажи билетов на Python, где она принимает несколько входных данных и считывает данные из файла в зависимости от количества билетов. Однако предыдущие входные данные перезаписываются более новыми входными данными, и я, похоже, не могу это исправить.
Результат, который я получаю, выглядит так:
J
a
k
e
25
M
a
l
e
Но я бы хотел, чтобы результат выглядел так:
Jake;25;Male
Я прикрепил код этой программы ниже. Любая помощь будет очень признательна. Спасибо.
import sys, select, os
from os import system
def option_1():
with open(input("Input file name with extension: "), 'w ') as f:
people = int(input("nHow many tickets: "))
name_l = []
age_l = []
sex_l = []
for p in range(people):
name = str(input("nName: "))
name_l.append(name)
age = int(input("nAge: "))
age_l.append(age)
sex = str(input("nGender: "))
sex_l.append(sex)
f.flush()
for item in name:
f.write("%sn" %item)
for item in [age]:
f.write("%sn" %item)
for item in sex:
f.write("%sn" %item)
x=0
print("nTotal Ticket: ", people, 'n')
for p in range(1, people 1):
print("Ticket No: ", p)
print("Name: ", name)
print("Age: ", age)
print("Sex: ", sex)
x = 1
def option_2():
with open(input('Input file name with extension: '), 'r') as f:
fileDir = os.path.dirname(os.path.realpath('__file__'))
f.flush()
f_contents = f.read()
print("n")
print(f_contents, end = '')
def main():
system('cls')
print("nTicket Booking Systemn")
print("n1. Ticket Reservation")
print("n2. Read")
print("n0. Exit Menu")
print('n')
while True:
option = int(input("Choose an option: "))
if option < 0 or option > 2:
print("Please choose a number according to the menu!")
else:
while True:
if option == 1:
system('cls')
option_1()
user_input=input("Press ENTER to return to main menu: n")
if((not user_input) or (int(user_input)<=0)):
main()
elif option == 2:
system('cls')
option_2()
user_input=input("Press ENTER to return to main menu: n")
if((not user_input) or (int(user_input)<=0)):
main()
else:
exit()
if __name__ == "__main__":
main()
Комментарии:
1. Я думаю, что вам будет полезно изучить обработку CSV-файлов на Python.
Ответ №1:
Если у вас есть последняя версия python, вы можете использовать an f-string
для создания требуемого формата.
Вам нужен цикл для повторения собранной вами информации.
Возможно, вам просто это понадобится:
...
f.flush()
for name,age,sex in zip(name_l, age_l, sex_l):
f.write(f"{name};{age};{sex}n")
...
Кроме того, для распечатки на консоль требуется аналогичный цикл:
print("nTotal Ticket: ", people, 'n')
for p,(name,age,sex) in enumerate(zip(name_l, age_l, sex_l), start = 1):
print("Ticket No: ", p)
print("Name: ", name)
print("Age: ", age)
print("Sex: ", sex)