Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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/apache-flex/4.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 for循环和函数_Python_Python 3.x - Fatal编程技术网

Python for循环和函数

Python for循环和函数,python,python-3.x,Python,Python 3.x,我是python新手,我一直在尝试解决这个问题,但它似乎没有达到预期的效果。非常感谢您的帮助: 给定两个数字X和Y,编写一个函数: 如果X大于Y,则返回X和Y之间的偶数 else返回x和y之间的奇数 就这样完成了。基本上,如果x>y,则需要切换第一个范围。您可以正常地附加项目(使用()而不是[]),然后返回完整列表,明白吗 def number(x,y): list = [] if x > y: for i in ran

我是python新手,我一直在尝试解决这个问题,但它似乎没有达到预期的效果。非常感谢您的帮助:

给定两个数字X和Y,编写一个函数:

  • 如果X大于Y,则返回X和Y之间的偶数
  • else返回x和y之间的奇数


就这样完成了。基本上,如果
x>y
,则需要切换第一个
范围。您可以正常地附加项目(使用
()
而不是
[]
),然后返回完整列表,明白吗

    def number(x,y):
        list = []
        if x > y:
            for i in range(y,x):
                if i%2 == 0:
                    list.append(i)
        else:
            for i in range(x,y):
                if i%2 == 1:                
                    list.append(i)

        return list

    print(number(10,2))
工作样本:


不要一直测试奇数/均匀度,而是从(已纠正、已知)奇数/偶数开始使用:

def number(x,y):
    if x > y:
        if y%2 == 1: # y is smaller && odd
            y += 1 # make even
        return list(range(y,x,2)) # x is > y - start from y to x
    else: # this is strictly not needed - but more verbose intention-wise
        if x%2 == 0: # is even
            x += 1 # make odd
        return list(range(x,y,2))


print(number(10,32))
print(number(10,2))
  • 如果
    x>y
  • 您不需要迭代一个范围并将其元素添加到
    列表中
    ,只需将范围序列填充到其中并返回即可
输出:

[11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
[2, 4, 6, 8]

试试这段代码,它可以根据你的需要工作

def number(x,y):
    num= []
    if x > y:
        for i in range(y,x):
            if i%2 == 0:
                num.append(i)
    else:
        for i in range(x,y):
            if i%2 == 1:
                num.append(i)
    return num

print(number(2,10))
print(number(10,2))
这些产出是:

[3, 5, 7, 9]
[2, 4, 6, 8]

如果这不符合您的目的,请告诉我。

这很容易做到,而且有几种方法可以满足您的需要,因此我向您展示了两种方法,第一种是可以理解的方法,第二种是简单的方法好的,让我们开始:-

第一个例子

第二个例子


注意:但请确保在我的两个答案中,
x
号是包含的(存在于搜索函数中),而
y
号是独占的,因此如果您想让这两个都包含在内,那么就创建循环
…(x,y+1)…。
如果您想让这两个都独占,只需将循环更改为
。。。(x+1,y).
在本文中,我使用列表理解。列表理解是python中一种简单易读的技术。在本文中,我包括x和y

def fun(x,y):
    if x>y:
        l=[i for i in range(y,x-1) if i%2==0]
        return l.reverse()
    else:
        l=[i for i in range(x,y+1) if i%2!=0]
    return l

知道
2%2==0
我们就可以使用
if not 2%2
进行偶数运算,因为
not 0
的计算结果为真,这是一种理解和扩展形式

def something(x, y):
    if x > y:
        l = [i for i in range(y, x) if not i % 2]
    else:
        l = [i for i in range(x, y) if i % 2]
    return l

print(something(10, 2))
print(something(2, 10))
全循环:

def something(x, y):
    l = []
    if x > y:
        for i in range(y, x):
            if not i % 2:
                l.append(i)
    else:
        for i in range(x, y):
            if i %2:
                l.append(i)
    return l

您的代码就快到了……让我看看
返回列表。追加[i]
.Lots要在此处解包。要调用函数,需要使用括号。
list.append
返回
None
,因此这也将返回。最后,这将在您第一次向列表中添加内容时返回。您希望在完成向列表中添加项目后返回。您也不应该使用名称
list
,因为它已经有了意义。请确保缩进是正确的。您可能在错误的位置创建空列表(除了一些语法错误)我写了一个类似的代码。我没有发布它,因为是你先发布的。所以我对你的答案投了赞成票。他应该接受你的答案。谢谢@ThexPhi@Hackerman非常感谢。它成功了。问题是缩进和在错误的位置声明我的列表没有问题@Evans…我修复了url,所以你可以看到代码在现场工作。请用文字解释为什么y你这样写函数。这将有助于其他人理解为什么这是一个更好的方法。
def fun(x,y):
    if x>y:
        l=[i for i in range(y,x-1) if i%2==0]
        return l.reverse()
    else:
        l=[i for i in range(x,y+1) if i%2!=0]
    return l
def something(x, y):
    if x > y:
        l = [i for i in range(y, x) if not i % 2]
    else:
        l = [i for i in range(x, y) if i % 2]
    return l

print(something(10, 2))
print(something(2, 10))
~/python/stack$ python3.7 sum.py 
[2, 4, 6, 8]
[3, 5, 7, 9]
def something(x, y):
    l = []
    if x > y:
        for i in range(y, x):
            if not i % 2:
                l.append(i)
    else:
        for i in range(x, y):
            if i %2:
                l.append(i)
    return l