while循环函数和if / break语句?

时间:2018-06-02 20:54:44

标签: python

我刚开始学习函数,我正在练习在我的代码中实现一些功能。只是一个简单的例子......我怎样才能将其编码为正确循环并在用户需要时突破?

def profit(i,c):

    gain = c - i

    print('Your profit is:' + '' + str(gain))

def beginning():

    x = float(input("What was your initial  investment?"))

    y = float(input("What is your investment worth now?"))

    profit(x,y)

beginning()

ans = 'y'

while ans == 'y' or ans == 'Y':
    ans = str(input('Would you like to calculate another investment? (Y/N)'))
    beginning()

    if ans != 'y' or ans != 'Y':
        break

2 个答案:

答案 0 :(得分:1)

有两种方法可以摆脱while循环。第一种方式显然是break语句,有点像你所做的那样。要使其正常工作,您需要更改条件:

if ans != 'y' or ans != 'Y':
    break

这将永远是真的,因为ans不能是" y"和" Y"同时。你应该把它改成:

if ans not in ["y", "Y"]:

或者

if ans.upper() != "Y":

但是,在你的情况下,你根本不需要它。因为在if语句和while条件中你都在检查ans,所以你可以摆脱if并依赖它。

while ans.upper() == "Y":

ans成为" Y"以外的任何内容时,这将自动结束循环。或" y"。

你在这里使用break的唯一原因是你想立即退出循环,而不是完成当前的迭代。例如:

while ans.upper() == "Y":
    ans = input("Enter selection: ")
    if ans == "I want to stop right now!":
        break
    print("Do other things, even if ans is not Y")

在这个例子中,"做其他事情"将始终打印,无论ans是什么,除非ans是"我想停止",在这种情况下,它不会被打印。

答案 1 :(得分:0)

获得用户输入后,您可以做的是ans = ans.capitalize()。然后移除ans != 'y',因为这会导致循环中断。