Python条件代码无法正常工作

7d7tgy0s  于 2023-01-01  发布在  Python
关注(0)|答案(2)|浏览(139)

我刚刚开始学习python,无法让这段代码正常工作。

def percentage():
    while True:
        try:
            x = int(input('First number:'))
            y = int(input('Second number:'))

            fraction = x/y
            percentage = fraction * 100
            final = "%d" % percentage

            return final

        except ZeroDivisionError:
            pass

        except ValueError:
            pass

if percentage() <= 1:
    print('E')

elif percentage() >= 99:
    print('F')

else:
    print(percentage(), "%")

只有当我输入x = 999和y = 1000时,才会打印“F”。任何其他值只是不断地提示用户。当百分比函数返回〈= 1时,代码应该输出“E”,当它返回〉= 99时,代码应该输出“F”,当返回任何其他值时,代码应该输出实际的百分比数字。

niwlg2el

niwlg2el1#

final是一个字符串时,我得到了一个类型错误,然后你试图将它与一个整数进行比较。然而,你所问的问题是由于percentage()的3次调用引起的。相反,调用它一次,并将返回值赋给一个变量,然后对该变量运行测试:

def percentage():
    while True:
        try:
            x = int(input('First number:'))
            y = int(input('Second number:'))
            return 100 * x / y
        except ZeroDivisionError:
            print('x')
            pass
        except ValueError:
            print('y')
            pass

p = percentage() 
if p <= 1:
    print('E')
elif p >= 99:
    print('F')
else:
    print(p, "%")
brccelvz

brccelvz2#

我将重新构造程序,以便percent函数将percentage作为浮点数而不是字符串返回,并在print语句中处理字符串格式。
我们还应该使用p = percentage()之类的变量将某个变量设置为等于函数的输出,然后在条件中使用p,这样我们就不会在条件中意外地多次运行percentage()。

def percentage():
    while True:
        try:
            x = int(input('First number:'))
            y = int(input('Second number:'))

            fraction = x/y
            percentage = fraction * 100
            # final = "%d" % percentage

            return percentage

        except ZeroDivisionError:
            pass

        except ValueError:
            pass

p = percentage()
if p < 1:
    print('E')

elif p >= 99:
    print('F')

else:
    print(f"{p:.2f}%")

程序运行示例:

First number:2
Second number:3
66.67%

相关问题