largest_so_far = None
smalest_so_far = None
value = float(raw_input(">"))
while value != ValueError:
value = float(raw_input(">"))
if value > largest_so_far:
largest_so_far = value
elif value == "done":
break
print largest_so_far
我认为这个问题是,当输入是float类型时,done是字符串。
我还尝试使用value = raw_input(">")
代替float(raw_input(">")
进行运行,但会将结果打印为已完成
答案 0 :(得分:2)
几点提示:
不是立即将用户输入转换为float
,为什么不首先检查它是否为done
?
由于您要永久执行此操作,直到用户输入done
或存在值错误,请使用无限循环和try..except
,如此
# Start with, the negative infinity (the smallest number)
largest_so_far = float("-inf")
# the positive infinity (the biggest number)
smallest_so_far = float("+inf")
# Tell users how they can quit the program
print "Type done to quit the program"
# Infinite loop
while True:
# Read data from the user
value = raw_input(">")
# Check if it is `done` and break out if it actually is
if value == "done":
break
# Try to convert the user entered value to float
try:
value = float(value)
except ValueError:
# If we got `ValueError` print error message and skip to the beginning
print "Invalid value"
continue
if value > largest_so_far:
largest_so_far = value
if value < smallest_so_far:
smallest_so_far = value
print largest_so_far
print smallest_so_far
编辑:已编辑的代码有两个主要问题。
continue
语句应位于except
块内。否则,总是会跳过比较。
当你比较不同类型的两个值时,Python 2并没有抱怨它。简单地说,比较值的类型。因此,在您的情况下,由于您将largest_so_far
指定为None
,因此将NoneType
与float
类型进行比较。
>>> type(None)
<type 'NoneType'>
>>> None > 3.14
False
>>> None < 3.14
True
因为float
类型始终小于None
类型,条件
if value > largest_so_far:
largest_so_far = value
永远不会满足。所以你将获得None
。相反,请使用我在答案中显示的float("- inf")
。
答案 1 :(得分:1)
我会这样做:
sdk.id