JavaScript中的if语句与Python中的if语句在While循环中的区别

3
我正在尝试将这段JavaScript代码移植到Python中,但很困难。在JavaScript中,函数可以接受两个字符串,例如str1=123456和str2=passwo。然后它会输出类似于p1a2s3s4w5o6的东西。
在Python中,它只是简单地合并它们。如果可能的话,请有人告诉我如何使用if语句在Python中完成此操作。也许我需要用另一种方式。谢谢你的帮助。
Python示例
def merge(str1, str2):
    arr1 = str1.split();
    arr2 = str2.split();
    result = "";
    index1 = 0;
    index2 = 0;
    while ((index1 < len(arr1)) or (index2 < len(arr2))):
        if(index1 < len(arr1)):
            result += arr1[index1];
            print("part1")
            index1 = index1+1;
        if(index2 < len(arr2)):
            result += arr2[index2];
            index2 = index2+1;
    print(result);
    return result;

Javascript 示例

function merge(str1, str2){
    var arr1 = str1.split("");
    var arr2 = str2.split("");
    var result = "";
    var index1 = 0;
    var index2 = 0;
    while((index1 < arr1.length) || (index2 < arr2.length)){
        if(index1 < arr1.length){
            result += arr1[index1];
            index1++;
        }
        if(index2 < arr2.length){
            result += arr2[index2];
            index2++;
        }
    }
    return result;
}

2
在Python中不需要分号。 - H. Pauwelyn
1
str1.split() 返回在空格上分割的 str1 的子字符串列表,因此在您的情况下,它将返回一个字符串列表,例如 ['abcdef']。直接迭代 str1 而不是不必要的 arr1 即可。 - Thierry Lathuille
4个回答

6

使用:

def merge(str1, str2):
    return "".join(x + y for x, y in zip(str(str1), str(str2)))

print(merge("passwo", 123456))

这将打印:

p1a2s3s4w5o6

1

首先,在Python中,你不需要在语句的末尾加上分号。 其次,在Python中,当你使用split()函数拆分字符串时,默认情况下会以空格为分隔符, 因此它会为你创建一个包含1个对象的列表。所以你不需要拆分,因为Python字符串已经类似于数组。

这是您修正后的代码(我只删除了split函数并将参数重命名为arr而不是str):

def merge(arr1, arr2):
    result = ""
    index1 = 0
    index2 = 0
    while ((index1 < len(arr1)) or (index2 < len(arr2))):
        if(index1 < len(arr1)):
            result += arr1[index1];
            print("part1")
            index1 = index1+1
        if(index2 < len(arr2)):
            result += arr2[index2];
            index2 = index2+1
    print(result)
    return result

1
Python 3通过list()提供了将字符串直接转换为列表的方法,并移除了分号。
使用:

    arr1 = list(str1)
    arr2 = list(str2)

代替

    arr1 = str1.split();
    arr2 = str2.split();

整个代码:

(段落标签)

def merge(str1, str2):
    arr1 = list(str1)
    arr2 = list(str2)
    result = ""
    index1 = 0
    index2 = 0
    while ((index1 < len(arr1)) or (index2 < len(arr2))):
        if(index1 < len(arr1)):
            result += arr1[index1]
            print("part1")
            index1 = index1+1
        if(index2 < len(arr2)):
            result += arr2[index2]
            index2 = index2+1
    print(result)
    return result

不一样,这是他的错误。 - assaf.b

0
如果两个字符串长度相同,你可以通过列表推导式来替换整个函数:
result = "".join([f"{str2[ind]}{str1[ind]}" for ind in range(len(str1))])

作为一个函数:
def merge(str1, str2):
    return "".join([f"{str2[ind]}{str1[ind]}" for ind in range(len(str1))])

在这里使用 zip,而不是通过索引循环。 - juanpa.arrivillaga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接