我要在Python类中做作业,并收到以下问题:
制作一个从用户那里获得2个数字并打印出这2个数字范围内的所有偶数的程序,您只能使用任意数量的for语句,而不能使用其他循环或if语句。
我了解我需要使用以下代码:
for num in range (x,y+1,2):
print (num)
但没有任何if
声明,我无法检查x
插入的值是偶数还是奇数,并且如果用户将数字插入5
为x
,则所有打印的图像都是奇数。
我也尝试将每个数字输入一个元组或数组,但是我仍然无法检查第一个数字是否甚至是开始打印。
def printEvenFor(x,y):
evenNumbers =[]
for i in range (x,y+1):
evenNumbers.append(i)
print (evenNumbers[::2])
要么
def printEvenFor(x,y):
for i in range (x,y+1,2):
print(i,",")
我期望的输出printEvenFor(5,12)
是6,8,10,12
,但它是5,7,9,11
您可以使用下限除法然后乘以x,使x为偶数:
x = (x // 2) * 2
然后,x将四舍五入为前一个偶数整数,如果之前为偶数,则保持不变。
如果要将其舍入为以下偶数整数,则需要执行以下操作:
x = ((x + 1) // 2) * 2
这可以通过使用移位运算符来进一步改善:
x = (x >> 1) << 1 #Alternative 1
x = ((x + 1) >> 1) << 1 #Alternative 2
例子:
#Alternative 1
x = 9
x = (x >> 1) << 1
#x is now 8
#Alternative 2
x = 9
x = ((x + 1) >> 1) << 1
#x is now 10
第二个可能更适合您
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句