Sar*_*ara 0 python arguments function
我真的很困惑,我不知道如何解决以下问题.
想象一下,我编写了一个很长的代码,我想将这个长代码转换为一个函数来防止重复.问题是我需要将'添加符号'(+)和'减法符号'( - )作为函数输入.我的意思是我有一个非常长的代码,我需要每次更改两个加法和减法的符号,而不是更多,最后根据改变这两个运算符得到输出(这两个运算符实际上是我的变量!)
如您所知,对于改变"加法和减法符号"的四种不同状态重复这个长函数,会使我的代码更长更长.我想知道是否有任何方法可以定义一个函数,它将这对加法和减法运算符作为输入,并给出这四种不同条件的输出?我举了一个简单的例子来澄清这个问题:
想象一下,我在"减号"和"加号"中有四个相似的"for循环":
edges=set()
a=60; b=40
for i in range(0,300):
a+=1; b+=1
if a!=0 and b!=0:
edges.add((a, b))
a=60; b=40
for i in range(0,300):
a-=1; b-=1
if a>=0 and b>=0:
edges.add((a, b))
a=60; b=40
for i in range(0,300):
a+=1; b-=1
if a>=0 and b>=0:
edges.add((a, b))
a=60; b=40
for i in range(0,300):
a-=1; b+=1
if a>=0 and b>=0:
edges.add((a, b))
print(edges)
Run Code Online (Sandbox Code Playgroud)
如你所见,除了"加号和减号"之外,这四个"for循环"都是相同的.我想只写一个函数而不是这四个重复的'for循环'.有没有其他方法可以解决这个问题?任何人有任何想法?
编写函数以接受增量作为参数.
def add_edges(aincr, bincr):
for i in range(0,300):
a += aincr; b += bincr
if a!=0 and b!=0:
edges.add((a, b))
Run Code Online (Sandbox Code Playgroud)
然后在调用时传递适当的增量:
add_edges(1, 1)
add_edges(-1, -1)
add_edges(1, -1)
add_edges(-1, 1)
Run Code Online (Sandbox Code Playgroud)
没有必要传递"添加"或"减去"的概念,因为您可以在数字上执行此操作.你可以(如其他答案所示),但尽量不要使事情过于复杂.
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |