2016-09-26 23 views
1

好吧,所以我在Python中练习循环,我在想如何让用户输入10个整数,然后它会输出最小的一个。我想知道如何与例如while循环做到这一点:Python中的循环(输出最小的输入)

Smallest = 0 
count = 0 
while count < 10: 
    Number = int(input("Enter a number >> ")) 
    if Number < Smallest: 
     Smallest = Number 
    count = count + 1 

print("{0} is the biggest value you have entered".format(Smallest)) 

但我怎么做一个for循环的格式?这是我到目前为止有:

for i in range(10): 
    Number = int(input("Enter a Number >> ")) 
    if Number < Smallest: 
     Smallest = Number 

print("{0} is the smallest value you have entered.".format(Smallest)) 
+2

'min(int(input(“Enter a Number >>”))for i in range(10))' –

+0

@Chris_Rands你应该给出答案而不是评论,因为它看起来很漂亮: D –

回答

2

你有什么有比其他事实,你应该初始化Smallest,相当于使用您的while声明的解决方案。

因此,假设while变体被认为是正确的,那么for变体就足够了。

我认定它的原因是因为初始化Smallest为零实际上是错误要做的事情。如果你的十个数字都大于二十(例如),Smallest将保持为零,给你一个错误的答案。要解决这个问题(在两种款式)

的一种方法是改变你的if声明:

if i == 0 or Number < Smallest: 

Smallest首次设立通过循环不管(虽然它应该是count在自while变种这是使用不同的循环控制变量)。


当然,当你了解的语言越来越多,你会遇到的事情是更“Python化”比别人的概念。这方面的一个例子是,而更简洁:

Smallest = min(int(input("Enter a Number >> ")) for i in range(10)) 

其中完全消除了需要明确的检查和替换策略(即仍然完成,但min功能的被子下)。

+0

我想使用for循环? –

+0

@Sam,我*告诉*你使用'for'循环,我会澄清。 – paxdiablo

1

如果你想得到最小的输入数字,你需要从最小值大于0开始......这是你在while循环中遇到的问题。它只会在用户输入至少一个负数时才起作用,否则将返回0

这里是我的建议:

smallest = float("inf") 
for i in range(10): 
    number = int(input("Enter a Number >> ")) 
    if number < smallest: 
     smallest = number 
print("{0} is the smallest value you have entered.".format(smallest)) 

请注意,我没有把握的变量,因为对我来说,让他们看起来像类。 ^^

+0

什么是课堂? –

+0

一个类是用于面向对象编程的东西。如果你不知道它是什么,不要担心。你不需要在Python中使用OOP。 –

3

初始化你最小的变量,所有的都可以!

Smallest = int(input("Enter a Number >> ")) 
for i in range(9): 
    Number = int(input("Enter a Number >> ")) 
    if Number < Smallest: 
     Smallest = Number 

print("{0} is the smallest value you have entered.".format(Smallest)) 
0

由于正在寻找最小值出来自用户的输入值是很好的做法,最初初始化最小变量作为最大可能的整数,如下。

import sys 
Smallest = sys.maxint 

然后,您的循环的其余部分将按照原样正常工作。

+0

对于Python 2来说这是一个很好的答案,但问题中的括号内的“print”往往表示Python 3.在那里,'maxint'不再存在,'int'可以容纳的任意限制也不再存在。这可能值得指出。 – paxdiablo

+0

是啊..谢谢指出。我没有注意到括号。在这种情况下,sys.maxsize也可以用于它的位置。 –

+1

几乎:'maxsize'会给你“自然”的限制(比如'2^64-1),但是取消整数类型的任意限制意味着你可以有更大的值 - 尝试'import sys','' x = sys.maxsize','print(x)','print(x + 1)'看到这个问题。换句话说,输入大于'maxsize'的所有值的用户将无法很好地工作,因为结果将是'maxsize'。 – paxdiablo