繁体   English   中英

while 循环中的多个输入,以及 Python 中的 try-except 块

[英]Multiple inputs in while loop, along with try-except block in Python

我正在尝试创建一个 ROI 计算器。 我想只接受int格式的输入。 我创建了一个try-except块来避免其他格式的输入。 但是,如果任何用户在RentLoss中输入了不正确的输入(例如str ),我的逻辑就会失败。

如果他们这样做,while 循环将再次开始向Investment请求输入。 我想绕过它,让代码从相应的变量本身询问输入,无论是Rent还是Loss 请问有什么建议吗?

print('This is a ROI calculator. Please enter below details:')

while True:
    try:
        Investment=int(input('Investment:'))
        Rent=int(input('Rent/month:'))
        Loss=int(input('Loss/year:'))
        if Loss:
            break
    except ValueError:
        print('Please enter in a number format only')

def ROI(Investment,Rent,Loss):
    Net_profit=int((Rent*12) - Loss)
    ROI=((Net_profit/Investment)*100)
    ROI=round(ROI,2)
    print(f'Your Return on Investment is: {ROI}')

ROI(Investment,Rent,Loss)

使用函数的力量:

def inputInt(text):
    """Ask with 'text' for an input and returns it as int(). Asks until int given."""
    while True:
        try:
            what = int(input(text))
            return what                # only ever returns a number
        except ValueError:
            print('Please enter in a number format only')

while True:
        Investment = inputInt('Investment:') 
        Rent = inputInt('Rent/month:') 
        Loss = inputInt('Loss/year:') 
        if Loss:   # this will break as soon as Loos is != 0 ?
            break
 # etc

因此,您始终在下方处理数字输入,并在始终返回 integer 的特定 function 中保持循环以进行输入收集和错误处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM