Здравствуйте и добро пожаловать в StackOverflow! Ваш код выглядит довольно хорошо, есть только одно маленькое изменение, которое необходимо для запуска этой программы. В настоящее время вы запрашиваете ввод данных пользователем внутри цикла while
, но затем вы выходите из цикла while
перед проверкой ввода. Давайте взглянем на правильную проверку ввода в python:
while True:
try:
loantotal = input("How much money do you need loaned? ")
loanyears = input("In how many years will full payment be fulfilled? ")
monthlyinterestrate = input("What's the annual interest rate? (Enter as whole number) ")
except ValueError:
print("Sorry, I didn't understand that.")
#better try again... Return to the start of the loop
continue
else:
# the values were successfully parsed!
#we're finished with input validation and ready to exit the loop.
break
# now we can continue on with the rest of our program
permonthpayment = (loantotal * (percent/12)) / (1-(1/(1 + (percent/12))) ** (loanyears * 12))
totalpayment = (permonthpayment) * totalpayments
print("You owe $" + str(round(permonthpayment, 2)), "each month")
print("You owe $" +str(round(totalpayment, 2)), "at the end of the pay period")
while True:...
по сути означает «делать ... навсегда», если вам явно не сказано остановиться. Таким образом, в нашем случае мы будем просить пользователя о вводе навсегда, пока они не введут значения, которые не приведут к ValueError
. Исключение ValueError
в python возникает из-за сбоя приведения типа данных или, более конкретно, в нашем случае из-за сбоя при преобразовании необработанного пользовательского ввода в числа с плавающей запятой.