[英]Python if and elif not working, giving error
I'm new in Python and doing an online tutorial. 我是Python新手,正在做在线教程。 I have an assignment that I can not accomplish.
我有一项无法完成的任务。 My problem is that when I run this code, the
minimum
variable stays the same to None
and does not record the new value input. 我的问题是,当我运行此代码时,
minimum
变量与None
保持不变,并且不记录新值输入。
maximum = None
minimum = None
while True:
try:
num2 = raw_input('Type here ')
if num2 == 'done':break
else:
num = int(num2)
if num <= minimum:
minimum = num
print minimum
elif num >= maximum:
maximum = num
print maximum
except:
print 'Invalid Entry'
print 'Maximum is %d' % maximum
print 'Minimum is %d' % minimum
Your problem is that your are checking if (some number) <= None
You cannot compare numbers with None
. 您的问题是您正在检查是否
(some number) <= None
您不能将数字与None
进行比较。 Instead, minimum=float("inf")
and maximum=float("-inf")
would set minimum to infinity, and maximum to negative infinity. 相反,
minimum=float("inf")
和maximum=float("-inf")
会将最小值设置为无穷大,将最大值设置为负无穷大。 That way, the first number entered would be less than infinity, setting it to minimum
, and greater than negative infinity (setting it to maximum
). 这样,输入的第一个数字将小于无穷大,将其设置为
minimum
,而大于负无穷大(将其设置为maximum
)。 Note that elif maximum >= num
would need to be changed to if maximum >= num
(to handle the first entered number). 请注意,
if maximum >= num
, if maximum >= num
需要将elif maximum >= num
更改为(处理第一个输入的数字)。
import sys
maximum = None
minimum = sys.maxsize
while True:
try:
num2 = raw_input('Type here ')
if num2 == 'done':break
else:
num = int(num2)
minimum = min(minimum, num)
maximum = max(maximum, num)
except:
print 'Invalid Entry'
if maximum is None:
minimum = None
print 'Maximum is %d' % maximum
print 'Minimum is %d' % minimum
You are comparing None
and int
, Python does not know how to do that. 您正在比较
None
和int
,Python不知道该怎么做。 Instead, you should do: 相反,您应该执行以下操作:
maximum = float('-inf')
minimum = float('inf')
Any int
would be greater than -infinity
and lower than infinity
, so things will work fine. 任何
int
都将大于-infinity
并小于infinity
,因此一切正常。 Same thing can not be said about zeroes, so don't use those. 关于零不能说相同的事情,所以不要使用那些。
Also, look up min
and max
builtins . 另外,查找
min
和max
buildins 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.