Nor*_*tfi 6 python position python-3.x
正如标题所示,我做了一个简单的函数,如下所示:
import sys
string = sys.argv[1]
def position():
for index in range(len(string)):
if string[index] == 'A':
print(int(index+1))
position()
Run Code Online (Sandbox Code Playgroud)
当与“AABABC”等测试字符串一起使用时,将以数字形式返回每个“A”的位置。
在这里,我增加索引,1 因为我注意到范围从 0 开始。虽然我可以传递 1 或任何我想要的数字以使其开始,但它会删除/不打印我想要的所有内容。所以我发现这在这种情况下效果最好。
这里一切正常。但当我用return语句替换函数中的 print 时却没有:
import sys
string = sys.argv[1]
def position():
for index in range(len(string)):
if string[index] == 'A':
return int(index+1)
print(position())
Run Code Online (Sandbox Code Playgroud)
在这里,我只显示对代码的编辑,但我确实尝试了几种不同的方法,所有方法都具有相似的结果(因为它不起作用):
+=在这种特定情况下不起作用?与可能被视为与我的重复/相似的其他“问题”相比,我print()在最后一个示例中使用了它之外的函数。所以问题很可能不是来自那里。
我也不认为我的缩进是错误的。
为了提供有关“什么不起作用”的更多详细信息,当我使用return而不是print此处并使用诸如“ABABACD”之类的测试字符串时,它将输出正确的“136”作为结果。但是,当return与我之前列出的其他失败尝试一起使用时,它只会输出“1”......
无论是否还有更多“循环”,Return 都会结束函数的运行。如果你想让它返回字符串中存在“A”的所有位置,你可以尝试这样的操作:
def position():
return [i+1 for i, j in enumerate(string) if j == "A"]
Run Code Online (Sandbox Code Playgroud)
与...一样
def position():
pos = []
for i, j in enumerate(string):
if j == "A":
pos.append(i+1)
return pos
Run Code Online (Sandbox Code Playgroud)
也可以使用正则表达式来完成:
import re
[i.start()+1 for i in re.finditer("A", string)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |