Как мне повторить эту попытку / за исключением всех других входных данных в коде?

#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, чтобы он выдавал исключение при возникновении ошибки