编译代码时没有错误。我将函数称为: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
答案 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
之前添加缩进