Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:有没有一种方法可以打印未知范围内的偶数而不使用if语句?_Python_Loops_For Loop_If Statement_Conditional - Fatal编程技术网

Python:有没有一种方法可以打印未知范围内的偶数而不使用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

我在Python课上有一个家庭作业要做,我被问到以下问题:

制作一个程序,从用户那里得到2个数字,然后打印所有的偶数 在这两个数字范围内的数字,您只能为 语句,但不能使用其他循环或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])


我希望(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