簡體   English   中英

為什么在以下代碼中沒有得到任何輸出?

[英]Why am I not getting any output in the below code?

編譯代碼時沒有錯誤。 我將函數稱為: 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

使用UPDATE 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元素

您沒有打印聲明。 要測試,請填寫

print(z)

另外,您還必須將r​​eturn放在while循環之外。

首先,您需要縮進return z因此它不在任何循環中:

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

然后,您需要將函數的結果分配給變量並打印:

result = pattern('abc')
print result

或者,您可以執行更直接的方法:

print pattern('abc')

您有一個無限循環。 您需要在內部while循環j遞增,否則如果您在修復縮進后調用print(pattern("abc")) ,則j總是小於i ,它應該返回您要查找的內容。

TL; DR,在j+=1之前添加縮進

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM