如何输入分母为两位数的分数

How to enter a fraction with two digits in denominator

提问人:Big_Port 提问时间:7/15/2023 最后编辑:greybeardBig_Port 更新时间:7/17/2023 访问量:57

问:

有谁知道我可以在不获得“非真正价值文本”的情况下放入 9/10 或类似内容的方法?
它适用于像 3/4、2/5 这样的个位数,但如果我输入 2/10,我就会出现错误。

while True:
    numerator, denominator = input("What is fraction is your fuel ").split("/")
    if numerator > denominator:
        print("Not real value, try again ")
        continue
    elif .90<= int(numerator)/int(denominator) <=.99:
        print("f")
    elif 0<= int(numerator)/int(denominator) <.10:
        print("E")
    else:
        fuel = str(round(int(numerator) / int(denominator) *100))
        print("Fuel meter is at: " + fuel + "%")
        break
python-3.x if-语句 变量 分数

评论

2赞 B Remmelzwaal 7/15/2023
在比较它们之前,您应该将 和 转换为整数。numdem

答:

1赞 juanpethes 7/15/2023 #1

它不适用于 9/10 的原因是 AND 存储为字符串,当您使用 AND 比较字符串时,它会按字母顺序比较它们。所以它正确地知道 9 > 8 > 7 >......但它认为 9 > 11 > 10 >......等等,因为它如前所述是按字母顺序排列的。要解决此问题,请将 num 和 dem 转换为整数,如下所示:numdem<>

num, dem = input("What is fraction is your fuel ").split("/")
num = int(num)
dem = int(dem)
...

评论

0赞 Big_Port 7/15/2023
哇,这么简单的错误。好看
1赞 juanpethes 7/15/2023
是的,这就是可能发生的事情。一个微妙的错误,由于数据类型不同而改变了程序的整个逻辑。至少你再也不会犯这个错误了:)