Python - 打印工作但 Return 不在基本功能中的情况
Python - Case where Print work but Return doesn't in a basic function
所以正如标题所示,我做了一个像这样的简单函数:
import sys
string = sys.argv[1]
def position():
for index in range(len(string)):
if string[index] == 'A':
print(int(index+1))
position()
当与“AABABC”这样的测试字符串一起使用时,return 每个“A”的位置都将作为一个数字。
这里我将索引增加 1 因为 我注意到范围从 0 开始,虽然我可以传递 1 或任何我想要的数字以使其开始那个,它会 remove/not 打印我想要的一切,所以我发现这在这种情况下效果最好。
这里一切正常。当我用 return 语句替换函数中的打印时,没有的是:
import sys
string = sys.argv[1]
def position():
for index in range(len(string)):
if string[index] == 'A':
return int(index+1)
print(position())
这里我只展示了对代码的修改,但我确实尝试了一些不同的东西,结果都相似(因为它不起作用):
- 不使用 int() 而是使用 += 递增索引 -> 在这种特定情况下不起作用?
- 使用另一个变量并检查这是否可行(一个显然不起作用的天真测试)
与其他可能被视为 duplicate/similar 我的“问题”相比,我在函数上使用了 print()
,在最后一个示例中它之外。所以问题可能不是出自那里。
我也不认为我的缩进有误。
当我使用 return 而不是在此处打印时,要提供有关“什么不起作用”的更多详细信息,当使用像“ABABACD”这样的测试字符串时,它会输出正确的“136” “ 结果。但是当使用 return 和我之前提到的其他失败尝试时,它只会输出“1”而不是...
Return 结束函数的 运行 是否还有更多的“循环”。如果你想让它 return 所有位置都有一个 "A" 在你的字符串中你可以尝试这样的事情:
def position():
return [i+1 for i, j in enumerate(string) if j == "A"]
同
def position():
pos = []
for i, j in enumerate(string):
if j == "A":
pos.append(i+1)
return pos
也可以使用正则表达式来完成:
import re
[i.start()+1 for i in re.finditer("A", string)]
所以正如标题所示,我做了一个像这样的简单函数:
import sys
string = sys.argv[1]
def position():
for index in range(len(string)):
if string[index] == 'A':
print(int(index+1))
position()
当与“AABABC”这样的测试字符串一起使用时,return 每个“A”的位置都将作为一个数字。
这里我将索引增加 1 因为 我注意到范围从 0 开始,虽然我可以传递 1 或任何我想要的数字以使其开始那个,它会 remove/not 打印我想要的一切,所以我发现这在这种情况下效果最好。
这里一切正常。当我用 return 语句替换函数中的打印时,没有的是:
import sys
string = sys.argv[1]
def position():
for index in range(len(string)):
if string[index] == 'A':
return int(index+1)
print(position())
这里我只展示了对代码的修改,但我确实尝试了一些不同的东西,结果都相似(因为它不起作用):
- 不使用 int() 而是使用 += 递增索引 -> 在这种特定情况下不起作用?
- 使用另一个变量并检查这是否可行(一个显然不起作用的天真测试)
与其他可能被视为 duplicate/similar 我的“问题”相比,我在函数上使用了 print()
,在最后一个示例中它之外。所以问题可能不是出自那里。
我也不认为我的缩进有误。
当我使用 return 而不是在此处打印时,要提供有关“什么不起作用”的更多详细信息,当使用像“ABABACD”这样的测试字符串时,它会输出正确的“136” “ 结果。但是当使用 return 和我之前提到的其他失败尝试时,它只会输出“1”而不是...
Return 结束函数的 运行 是否还有更多的“循环”。如果你想让它 return 所有位置都有一个 "A" 在你的字符串中你可以尝试这样的事情:
def position():
return [i+1 for i, j in enumerate(string) if j == "A"]
同
def position():
pos = []
for i, j in enumerate(string):
if j == "A":
pos.append(i+1)
return pos
也可以使用正则表达式来完成:
import re
[i.start()+1 for i in re.finditer("A", string)]