2010-10-31 41 views
0

這個功能不會在Python的IDLE進行測試時,給我的輸出:加擾功能不會輸出

import random 

def scramble(string): 

rlist = [] 

while len(rlist) < len(string): 

     n = random.randint(0, len(string) - 1) 
     if rlist.count(string[n]) < string.count(string[n]): 
      rlist += string[n] 
    rstring = str(rlist)   
    return rstring 

scramble('sdfa') 

我花了很長時間試圖找出問題,但代碼看起來好我。

+1

您的壓痕看起來並不正確。 – kennytm 2010-10-31 19:08:46

+4

你不在屏幕上打印結果,因此它是正常的,它不輸出任何東西。另請注意,隨機模塊中已有一個隨機播放功能。 – 2010-10-31 19:09:01

回答

0

正確地格式化這似乎解決了這個問題。

import random 

def scramble(string): 
    rlist = [] 
    while len(rlist) < len(string): 
     n = random.randint(0, len(string) - 1) 
     if rlist.count(string[n]) < string.count(string[n]): 
     rlist += string[n] 
    rstring = str(rlist)   
    return rstring 
print(scramble('sdfa')) 

在Python中,縮進是一樣好語法 作爲重要的:)順便說一句,作爲@Vincent Savard說,你沒有打印出結果。在你的爭奪()你返回一個字符串,但你沒有做任何事情與所說的字符串。

+0

他原來的文章根本沒有格式,我不會責怪壓縮問題。有人編輯它,他可能沒有正確縮進它。 – 2010-10-31 19:22:52

0

有兩點要注意:

不要使用string作爲參數名稱,它可以與standard module string衝突。

你可能不希望返回列表,從而導致類似

>>> rlist = ['s', 'a', 'f', 'd'] 
>>> str(rlist) 
>>> "['s', 'a', 'f', 'd']" 

相反,獲得加擾字符串結果的str(),使用str.join()

>>> rlist = ['s', 'a', 'f', 'd'] 
>>> ''.join(rlist) 
'safd' 
>>> 

最後2行scramble可加入單個return

return str(rlist) 

return ''.join(rlist)