2017-09-27 78 views
1

第一行应该给出案例的数量,之后的行将是案例,在这些案例中,您必须能够打印出最大数量,最小数量和范围。 到目前为止我有这个代码,但它只考虑了前两种情况并完全忽略了表示案例数量的第一行。有人能告诉我它有什么问题吗?谢谢!如何从python中的多行用户输入中打印最大和最小数字?

cases = int(input()) 
index = 1 
inp = int(input()) 
minimum = inp 
maximum = inp 
while index<=cases: 
    inp = int(input()) 
    if input>maximum: 
    maximum = inp 
    elif input<minimum: 
    minimum = inp 
    index = index + 1 
    print('Maximum: '+str(maximum)) 
    print('Minimum: '+str(minimum)) 
    print('Range: '+str(maximum-minimum)) 

回答

0

这是一个典型的偏差错误。对于这些人来说,一个通用的解决方案就是用一些小数字(如1或3)来测试你的算法,并检查它们是否符合你的期望。

比方说,第一个输入为1,那么cases被初始化为1。while条件index<=cases计算结果为1<=1,所以它进入循环一次,虽然你已经注册上线的情况下,3

只需将环路条件替换为index<cases即可,您将会好起来。此外,您需要取消对print调用的调用,以便在读取所有输入后再写入一次。

此外,一个好的建议是使用调试器来查看程序的实际流程和变量中的值是否符合您的期望,如果您遇到更难以解决的问题,而您只是通过查看代码就无法解决问题。 PyCharm是一个非常稳定的IDE,用于调试Python代码。

0

这将有助于解决你的问题:

cases = int(input()) 
arr = [int(input()) for i in range(cases)] 
min_e, max_e = min(arr), max(arr) 
print("Min:{} Max:{} Range:{}".format(min_e, max_e, max_e-min_e)) 
+0

虽然蟒蛇确实允许这样一个简短的解决方案,它是更容易为菜鸟开发者阅读,写的比较详细,但低层代码像OP一样。或者我在错误的网站上思考教学法? ;) – wigy

+1

是的,你可以写更长的版本。但是如果你没有学习算法,使用标准函数会节省时间:) – AndMar

相关问题