python简介 - 一系列数字

时间:2018-06-12 15:50:28

标签: python

我一直在阅读python小册子的介绍,并一直坚持以下问题。问题概述如下,我的尝试在问题之后。

  

参加这个计划:

 m = 0
finished = False
while not finished:
  print('Enter another whole number (0 to finish): ', end = '')
  s = input()
  num = int(s)
  if num != 0:
      if num > m:
          m = num
  else:
      finished = True
print(str(m))
     

如果你已经弄清楚上面的程序是做什么的,你能看到吗,   对于某些系列

     

的数字,它不会产生正确的输出?在什么   情况不会

     

正常工作,你怎么能改变   使程序正常运行的程序?

我的理解是,上述程序失败的一系列数字是十进制数字(非整数),因此我的尝试如下:

m='0'
finished = False
while not finished:
    print('enter number, 0 to finish: ', end = '')
    num = input()
    if num != '0':
        if num > m:
            m = num
    else:
        finished = True
print(m)

然而,由于理解77大于8,因此无法理解,因为它将其作为字符串读取。

1 个答案:

答案 0 :(得分:1)

该程序根据输入的序列计算最大值。它将最大值存储在m中,如果输入的num大于它,则会将其保持为新的最大值。

但是,请注意m初始化为0,隐含假设您输入的至少一个数字为正数。如果您只输入负数,那么您将0作为最大数字,这显然是错误的,因为您从未输入过它。

快速解决方法可能是使用m初始化None并明确检查它:

m = None
finished = False
while not finished:
  print('Enter another whole number (0 to finish): ', end = '')
  s = input()
  num = int(s)
  if num != 0:
      if not m or num > m:
          m = num
  else:
      finished = True
print(str(m))