有条件的赢得没有正确执行

时间:2017-07-05 21:37:28

标签: python python-2.x

我想知道你是否可以帮我解决下面的代码:

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 。你能解释一下原因吗?

2 个答案:

答案 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 > inputmin,则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
祝你好运!