Чувак, я здесь сегодня много.
Хорошо, так что я только что закончил свое задание. Моя единственная проблема на этом этапе - когда я go проверяю «остальное», он продолжает печатать спам, пока я не остановлю его.
Вот полный код.
import re
from statistics import mean
def file_info():
# Open & read file
grades_file = open('grades.txt', 'r')
file_contents = grades_file.read()
# Print Header & spacer
print('Name' + '\t\tGrade')
print('---------------------')
# Print contents of file
print(file_contents.rstrip('\n'))
# Extract numbers from file, calculate avg
num_list = re.findall(r"[-+]?\d*\.\d+|\d+", file_contents)
grades = [float(num) for num in num_list]
average = mean(grades)
# Print avg
print('Average Grade:', format(average, '.2f'))
# Close file
grades_file.close()
def main():
file_info()
# Open file to append
grades_file = open('grades.txt', 'a')
# Continue program press y or n
fwd = str(input('\nAdd another student (Y/N): '))
while True:
if fwd.lower() == 'y':
while True:
name = str(input("Enter student's name: "))
if not name.isalpha():
print("Please enter a valid name.")
continue
else:
break
while True:
grade = float(input("Enter student's grade: "))
if grade < 0:
print("Input grade between 0-100.")
continue
elif grade > 100:
print("Input grade between 0-100.")
continue
else:
break
# Write data to file
grades_file.write(name + ' ' + str(grade) + '\n')
# Continue adding more students?
cont = str(input('Add another student (Y/N): '))
if cont.lower() == 'y':
continue
elif cont.lower() == 'n':
grades_file.close()
file_info()
exit()
else:
print('Choose "Y" or "N"')
elif fwd.lower() == 'n':
exit()
else:
print('Choose "Y" or "N"')
continue
main()
Если Я пытаюсь проверить последний оператор «else», он спамит «Выбрать Y или N» до тех пор, пока я не остановлю программу.
Единственное, что останавливает его, это если я «ломаю», но затем программа останавливается и не Не пытайтесь снова спросить пользователя. Идеи?
Редактировать: Вот как выглядит вывод
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"
Choose "Y" or "N"