为什么我在下面的代码中没有得到任何输出?

时间:2016-07-25 13:23:33

标签: python python-2.7

编译代码时没有错误。我将函数称为:pattern('abc')。期望输出为'A-Bb-Ccc'

def pattern(s):
    v = []
    v = list(s)
    strlen = len(v)
    i = 0
    cntr = 0
    strng = []
    while i < strlen:
        j = 0
        while j <= i:
            if j == 0:
                strng.append(v[i].upper())
            else:
                strng.append(v[i])
        j += 1
        strng.append('-')
        i += 1
        z = ''.join(strng)
        return z

4 个答案:

答案 0 :(得分:3)

使用enumerate代替zip

更新

source = 'abc'

'-'.join([(x*i).capitalize() for i, x in  enumerate(source, 1)])
source = 'abc'

'-'.join([(x*i).capitalize() for x,i in  zip(source, range(1, len(source)+1))])

一些解释:

zip(source, range(1, len(source)+1))创建对(a,1), (b,2), (c,3)

x*i表示连接,即a*3生成字符串aaa

aaa.capitalize()将第一个字母作为第一个字母

'-'.join(a_list)使用a_list作为分隔符

加入-中的元素

答案 1 :(得分:1)

您没有打印声明。要测试它,请填写

print(z)

此外,您必须将返回放在while循环之外。

答案 2 :(得分:0)

首先,您需要缩进return z,因此它不在任何循环中:

def pattern(s):
    #Rest of the code
    return z

然后你需要将函数的结果赋给变量并打印出来:

result = pattern('abc')
print result

或者您可以采用更直接的方法:

print pattern('abc')

答案 3 :(得分:0)

你有一个无限循环。如果在修复缩进后调用j,则内部while循环中需要j增量,i总是小于print(pattern("abc"))返回你要找的东西。

TL; DR,在j+=1之前添加缩进