Python:有没有一种方法可以打印未知范围内的偶数而不使用if语句?
我在Python课上有一个家庭作业要做,我被问到以下问题: 制作一个程序,从用户那里得到2个数字,然后打印所有的偶数 在这两个数字范围内的数字,您只能为 语句,但不能使用其他循环或if语句 我理解我需要使用以下代码:Python:有没有一种方法可以打印未知范围内的偶数而不使用if语句?,python,loops,for-loop,if-statement,conditional,Python,Loops,For Loop,If Statement,Conditional,我在Python课上有一个家庭作业要做,我被问到以下问题: 制作一个程序,从用户那里得到2个数字,然后打印所有的偶数 在这两个数字范围内的数字,您只能为 语句,但不能使用其他循环或if语句 我理解我需要使用以下代码: for num in range (x,y+1,2): print (num) 但是如果没有任何if语句,我无法检查插入的x值是偶数还是奇数,如果用户将数字5插入为x,则所有打印都将是奇数 我还尝试将每个数字输入元组或数组,但仍然无法检查第一个数字是否开始打印 def p
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])
或
我希望(5,12)的输出是
6,8,10,12
,但它是5,7,9,11
您可以通过使用地板除法和乘法来实现x的偶数:
x = (x // 2) * 2
然后,x将四舍五入到上一个偶数整数,或者如果之前是偶数,则保持不变
如果要将其四舍五入为以下偶数整数,则需要执行以下操作:
x = ((x + 1) // 2) * 2
这可以通过使用换档操纵器进一步改进:
x = (x >> 1) << 1 #Alternative 1
x = ((x + 1) >> 1) << 1 #Alternative 2
x=(x>>1)>1)>1)试试这个:
x=x+x%2
对于范围(x,y+1,2)中的数值:
打印(个)
您可以这样做:
>>> for n in range((x + 1) // 2 * 2, y+1, 2):
print(n)
range
的第一个参数强制它成为下一个偶数(如果它是奇数)。最后一个参数分为两个参数。下面的函数将执行您想要的操作。我使用round
强制边界为偶数,以便从偶数开始计算范围
def printEvenfor(x,y):
return list(range(((x+1) // 2) * 2,y+1, 2))
printEvenfor(9,16)
def print_even_between(x, y):
x = round(x / 2) * 2
y = round(y / 2) * 2
for i in range(x, y, 2):
print(i)
print(y)
您可以使用提醒获取正确的范围:
def print_event_for(min_, max_):
reminder = min_ % 2
for i in range(min_+reminder, max_+reminder, 2):
print(i)
print_event_for(5, 12)
输出:
6
8
10
12
一种方法是使用while,它在
for each in range(int(input()),int(input())):
while each%2 == 0:
print (each)
break;
简单但有趣的是:将字符串与零相乘
>>> low, high = int(input()), int(input())
5
13
>>> for n in range(low, high + 1):
... print('{}\n'.format(n)*(not n%2), end='')
...
6
8
10
12
不会打印奇数,因为字符串与False
(作为零)相乘。您缺少主检查i%2==0
:列表(范围(5+1,12+1,2))
(或更一般的列表(范围(x+x%2,y+y%2,2))
)
for each in range(int(input()),int(input())):
while each%2 == 0:
print (each)
break;
>>> low, high = int(input()), int(input())
5
13
>>> for n in range(low, high + 1):
... print('{}\n'.format(n)*(not n%2), end='')
...
6
8
10
12