#python #python-3.x #try-catch
#python #python-3.x #попробуйте-поймайте
Вопрос:
Как мне повторить ту же попытку / за исключением того, что вы видите для первого ввода в каждом другом вводе?
import math
import sys
import time
while True:
try:
Money = float(input("How much are you depositing?"))
except:
print("please enter numbers")
continue
AIR = float(input("What is the annual interest rate?"))
#Annual Interest Rate
n = int(input("How many times a year do you want the interst compounded for?"))
# number of times the interst compounds
t = int(input("How many years are you investing/borrowing the money?"))
# total number of years the money is being invested/borrowed for
CCI = Money *(1 AIR/n)**(n*t)
# Calculated Compound Interest
print(math.trunc(CCI));
# main program
Комментарии:
1. Что вы подразумеваете под реплицированием? Пожалуйста, поподробнее?
2. Итак, когда вы запускаете программу, она начинается с вопроса «Сколько вы вносите?» Я поместил туда блок try except, чтобы разрешалось вводить только числа, и он продолжал бы выдавать пользователю повторную попытку вопроса, пока они не введут допустимый ввод, затем он переходит к следующему вопросу. Мне нужна помощь в создании такой же попытки, за исключением того, чтобы сделать то же самое для всех других вопросов (входных данных в коде).
3. Надеюсь, я здесь что-то понимаю?
Ответ №1:
Извлеките эту логику в функцию, которую затем можно использовать повторно:
def read(type_, prompt): # using "type_" not to shadow built-in "type"
while True:
try:
return type_(input(prompt))
except (TypeError, ValueError):
print("Please enter a {}".format(type_.__name__))
Money = read(float, "How much are you depositing?n")
AIR = read(float, "What is the annual interest rate?n")
n = read(int, "How many times a year do you want the interst compounded for?n")
t = read(int, "How many years are you investing/borrowing the money?n")
CCI = Money *(1 AIR/n)**(n*t)
print(math.trunc(CCI))
Комментарии:
1. Я склонен не соглашаться, если только они еще не узнали о функциях. Это намного аккуратнее, удобочитаемее и не потребует повторного ввода всех значений, если у вас только что была опечатка, скажем, в последнем.
Ответ №2:
вы можете добавлять их в одну и ту же попытку-исключение или запись несколько раз. если вы сделаете это в том же режиме, у вас будет одно и то же сообщение об ошибке, но если вы напишете несколько попыток, кроме, тогда у вас могут быть разные сообщения об ошибках
import math
import sys
import time
while True:
try:
Money = float(input("How much are you depositing?"))
n = int(input("How many times a year do you want the interst compounded for?"))
# number of times the interst compounds
t = int(input("How many years are you investing/borrowing the money?"))
AIR = float(input("What is the annual interest rate?"))
#Annual Interest Rate
except:
print("please enter numbers")
continue
# total number of years the money is being invested/borrowed for
CCI = Money *(1 AIR/n)**(n*t)
# Calculated Compound Interest
print(math.trunc(CCI));
# main program
Ответ №3:
Вы можете сделать что-то вроде этого:
app.py
while True:
try:
Money = float(input("How much are you depositing?"))
AIR = float(input("What is the annual interest rate?"))
#Annual Interest Rate
n = int(input("How many times a year do you want the interst compounded for?"))
# number of times the interst compounds
t = int(input("How many years are you investing/borrowing the money?"))
# total number of years the money is being invested/borrowed for
CCI = Money *(1 AIR/n)**(n*t)
# Calculated Compound Interest
print(math.trunc(CCI));
# main program
break
except:
print("please enter numbers")money?"))
break
Сообщает python о выходе из цикла
итак, если код достигает break
, это означает, что он не вызывал никаких исключений и что это действительно число
Вы помещаете все свои вычисления в блок try, чтобы он выдавал исключение при возникновении ошибки