我想知道你是否可以帮我解决下面的代码:
ContactPhoneFormSet = modelformset_factory(
ContactPhone, ContactPhoneForm, extra=1, can_delete=True)
formset = ContactPhoneFormSet(form_kwargs={'contact_id': contact_id})
它看起来对我来说,但是为min赋值的elif语句总是打印min = None
max = None
while True:
input = raw_input("Please enter number: ")
if input == "done":
break
else:
try:
input = float(input)
except:
continue
if max < input:
max = input
elif min > input:
min = input
print min
print max
。你能解释一下原因吗?
答案 0 :(得分:4)
None > number
永远不会成立,因为Python 2会在任何其他类型之前排序None
。不要将数字与None
进行比较。
明确地测试None
,或用无穷大值替换None
。
测试None
:
if max is None or max < input:
max = input
elif min is None or min > input:
min = input
将值设置为正或负无穷大:
min = float('inf')
max = float('-inf')
通过将min
设置为正无穷大,保证任何其他数字更小;这同样适用于max
负无穷大。
答案 1 :(得分:0)
如果min > input
为min
,则None
始终为假,因此它永远不会被设置。
你也不想要elif
。第一个数字是最小值和最大值。
修正:
min = None
max = None
while True:
input = raw_input("Please enter number: ")
if input == "done":
break
else:
try:
input = float(input)
except:
continue
if max is None or max < input:
max = input
if min is None or min > input:
min = input
print min
print max
祝你好运!