Python for循环和函数
我是python新手,我一直在尝试解决这个问题,但它似乎没有达到预期的效果。非常感谢您的帮助: 给定两个数字X和Y,编写一个函数: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
- 如果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