如何在python中打印多行用户输入的最大和最小数字?

时间:2017-09-27 04:42:16

标签: python if-statement while-loop max minimum

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

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))

2 个答案:

答案 0 :(得分:0)

这是一个典型的逐个错误。对于那些人来说,通用的解决方案是尝试使用一些小数字(如1或3)来验证算法,并检查它们是否符合您的期望。

假设第一个输入为1,因此cases初始化为1. while条件index<=cases的计算结果为1<=1,因此它再次进入循环,虽然您已在第3行注册了案例。

只需将循环条件替换为index<cases,您就可以了。此外,在读取所有输入后,您需要取消print次调用以将其写入一次。

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

答案 1 :(得分: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))