至少有三个数字,某些值的答案错误

时间:2017-11-09 17:44:49

标签: python

我试图找到三个数字中的最小数字但是对于某些值,答案是错误的,例如10,30,4,它显示最小数字为10.

 num1 = input("Enter a number: ")
num3 = input("Enter a number: ")
num4 = input("Enter a number: ")
if (num1 < num3) and (num1 < num4):
    print(num1)
elif (num3 < num4) and (num3 < num1):
    print(num3)
else:
    print(num4)

3 个答案:

答案 0 :(得分:1)

您正在比较文字。在比较之前,您需要将输入转换为int个对象。

num1 = int(input("Enter a number: "))
num3 = int(input("Enter a number: "))
num4 = int(input("Enter a number: "))
if (num1 < num3) and (num1 < num4):
    print(num1)
elif (num3 < num4) and (num3 < num1):
    print(num3)
else:
    print(num4)

答案 1 :(得分:1)

问题[['', 'a', 'a'], ['ab', '', 'abc']] 返回字符串字符串按字典顺序进行比较。所以你应该将其转换为整数,你可以使用input()执行此操作:

int(..)

但是,这是计算最小值的好方法。如果你必须计算50个整数的最小值,你会怎么做?构建一个拥抱量的支票?计算机科学家 Edsger W. Dijkstra 曾经说过:

  

两个或更多?使用num1 = int(input("Enter a number: ")) num3 = int(input("Enter a number: ")) num4 = int(input("Enter a number: ")) if (num1 < num3) and (num1 < num4): print(num1) elif (num3 < num4) and (num3 < num1): print(num3) else: print(num4)” - Edsger W. Dijkstra

因此,如果您必须多次工作,最好使用for循环来处理它。这样的代码片段的骨架看起来像:

for

for i in range(3): # ... pass 循环(此处为for)的正文将重复三次。现在我们可以将哪些工作放入...循环中?当然我们可以查询用户输入。所以我们可以写:

for

但现在我们还是要计算最小值。处理此问题的方法是使用累加器:通过迭代维护的变量,并相应地更新。这里累加器可以是到目前为止获得的最小值。由于最初我们没有最小值,我们可以使用for i in range(3): number = int(input("Enter a number: ")) # ...

初始化它
None

现在,如果thus_far_minimum = None for i in range(3): number = int(input("Enter a number: ")) # ... thus_far_minimum,我们可以指定我们从用户查询的None。此外,如果number不再thus_far_minimum(因此已初始化),但None小于number,我们可以更改thus_far_minimum有最低限度。例如:

thus_far_minimum

最后我们可以打印thus_far_minimum = None for i in range(3): number = int(input("Enter a number: ")) if thus_far_minimum is None or number < thus_far_minimum: thus_far_minimum = number print(thus_far_minimum) ,因为它是我们看到的所有数字的最小值。

答案 2 :(得分:0)

使用input(),您获得strings,因此将输入值转换为整数。

num1 = int(input("Enter a number: "))
num3 = int(input("Enter a number: "))
num4 = int(input("Enter a number: "))

将变量设置为num1,然后在将num1num3num4进行比较时重置该变量。

smallest = num1

if num3 < smallest:
        smallest = num3    
if num4 < smallest:
        smallest = num4
        if num3 < num4:
            smallest = num3

print(smallest)