String 如何在Python中将变量传递给函数
我是一个新手,也是我的第一篇帖子,所以请原谅任何违反协议或新手编码错误:) 使用Python 3.7代码 赋值:在字符串中查找一个字符,并在找到的字符之前添加一系列字符。该字符在字符串中出现多次。 方法: 已将字符串加载到变量中: 将此变量和字符传递给函数,如果在变量中找到该字符,该函数将返回该字符的索引 迭代索引以添加一系列字符String 如何在Python中将变量传递给函数,string,python-3.7,String,Python 3.7,我是一个新手,也是我的第一篇帖子,所以请原谅任何违反协议或新手编码错误:) 使用Python 3.7代码 赋值:在字符串中查找一个字符,并在找到的字符之前添加一系列字符。该字符在字符串中出现多次。 方法: 已将字符串加载到变量中: 将此变量和字符传递给函数,如果在变量中找到该字符,该函数将返回该字符的索引 迭代索引以添加一系列字符 def find_indices_of(char, in_string): index = -1 print(index) while Tru
def find_indices_of(char, in_string):
index = -1
print(index)
while True:
index = in_string.find(char, index + 1)
if index == -1:
break
yield index
var1 = "abcabcabc"
for i in find_indices_of('b', var1):
var1 = var1[:i] + 'XY' + var1[i:]
问题:对于循环的第一次迭代,当函数第一次调用时,函数将变量(var1)作为常量给定,并返回一组常量索引。但是迭代中的逻辑是向变量添加一系列字符。每次调用函数时,不会将此更新的变量传递给该函数。因此,不会更新角色的索引,因此循环的进一步迭代将使用旧的索引值。这将导致在不需要的索引处添加一系列字符
期望输出:
aXYZbcaXYZbcaXYZbc
实际产量:
AXYZBXYZXYZABCAB
我正在努力将更新后的变量作为参数提交给函数:find_index_of以获得正确的索引。我还需要函数在返回更新的索引之前省略先前出现的char。有什么方法可以做到这一点吗?这里是调用find\u index\u of(char,in\u string)函数时要做的事情 它返回所有索引的列表。当您对它进行迭代并更新var1的值时,很明显,在第一次迭代之后,第二次'b'的索引将被更改。它与函数返回的find_index_不一样,因为您在第一次出现'b'之前添加了一些字符,所以第二个'b'将被移到更高的索引,但在列表中它有以前的位置,所以只需按相反的顺序在列表上迭代即可更改其他角色的位置
for i in reversed(find_indices_of('b', var1)):
var1 = var1[:i] + 'XY' + var1[i:]
以下是所需逻辑的基本实现
def find(char, in_string):
return [i for i, c in enumerate(in_string) if c == char]
var1 = "abcabcabc"
all_index = find('b',var1)
for i in reversed(all_index):
var1 = var1[:i] + 'XYZ' + var1[i:]
print(var1)
输出将如下所示
desired Output:aXYZbcaXYZbcaXYZbc
Actual Output: aXYZbcaXYZbcaXYZbc
在这里,当调用find\u index\u of(char,in\u string)函数时,您正在做什么 它返回所有索引的列表。当您对它进行迭代并更新var1的值时,很明显,在第一次迭代之后,第二次'b'的索引将被更改。它与函数返回的find_index_不一样,因为您在第一次出现'b'之前添加了一些字符,所以第二个'b'将被移到更高的索引,但在列表中它有以前的位置,所以只需按相反的顺序在列表上迭代即可更改其他角色的位置
for i in reversed(find_indices_of('b', var1)):
var1 = var1[:i] + 'XY' + var1[i:]
以下是所需逻辑的基本实现
def find(char, in_string):
return [i for i, c in enumerate(in_string) if c == char]
var1 = "abcabcabc"
all_index = find('b',var1)
for i in reversed(all_index):
var1 = var1[:i] + 'XYZ' + var1[i:]
print(var1)
输出将如下所示
desired Output:aXYZbcaXYZbcaXYZbc
Actual Output: aXYZbcaXYZbcaXYZbc
是的,有办法。@Aryamcarthy:你能和我分享吗?是的,有办法。@Aryamcarthy:你能和我分享吗?