Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在Python中将变量传递给函数_String_Python 3.7 - Fatal编程技术网

String 如何在Python中将变量传递给函数

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

我是一个新手,也是我的第一篇帖子,所以请原谅任何违反协议或新手编码错误:)

使用Python 3.7代码

赋值:在字符串中查找一个字符,并在找到的字符之前添加一系列字符。该字符在字符串中出现多次。 方法:

已将字符串加载到变量中:

将此变量和字符传递给函数,如果在变量中找到该字符,该函数将返回该字符的索引

迭代索引以添加一系列字符

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:你能和我分享吗?