我一直在阅读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,因此无法理解,因为它将其作为字符串读取。
答案 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))