根据给定的条件连接不同字符串的迭代

时间:2018-02-22 03:25:42

标签: python iteration

目前难以搞清楚这个。我知道我很近,但我无法弄清楚我哪里出错了。 我希望输出显示一个字符串,其中偶数对应于'? - '奇数对应于'? - ',并将所有字符串连接在一起。例如。 star_wars_iteration(3)应该返回'? - ? - ? - ' 但是,我没有加起来,它只返回一次。

def star_wars_iteration(num_enemy_ships): 
    counter = 1 
    result = '' 
    while counter in range(1,num_enemy_ships + 1): 
        if counter % 2 == 0: 
            return '?--' 
        elif counter % 2 == 1: 
            return '?-' 
    result = result + counter 
    counter = counter + 1

2 个答案:

答案 0 :(得分:2)

return一旦到达就会停止该功能。您也会混淆whilefor。你想要的是:

def star_wars_iteration(num_enemy_ships):
    result = '' 
    for counter in range(1,num_enemy_ships + 1): 
        if counter % 2 == 0: 
            result += '?--'
        elif counter % 2 == 1:
            result += '?-'
    return result

或者,如果您想使用while,请使用while counter <= num_enemy_ships :(使用in range(...)也可以正常工作但效率不必要)并确保counter = counter + 1内部 while阻止。

注意:更简洁和pythonic:

def star_wars_iteration(num_enemy_ships):
    return ''.join('?-' if counter % 2 else '?--' for counter in range(1,num_enemy_ships + 1))

答案 1 :(得分:0)

为什么不使用Pythonic迭代器和范围函数来实现它们不需要增加范围内的起始值和结束值:

def star_wars_iteration(num_enemy_ships):
    return "".join('?-' if index % 2 else '?--' for index in range(num_enemy_ships))