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')

問題を解決するために長い時間を費やしましたが、コードは私には良さそうです。

4

2 に答える 2

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が言ったように、結果を出力しませんでした。scramble()で文字列を返しましたが、その文字列に対して何もしませんでした。

于 2010-10-31T19:19:17.980 に答える
0

いくつかのメモ:

string引数名として使用しないでください。標準モジュールstringと競合する可能性があります。

おそらく、リストの を返したくないでしょうstr()。その結果、次のような結果になります

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

代わりに、スクランブルされた文字列の結果を取得するには、次を使用しますstr.join()

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

の最後の 2 行はscramble、1 つの に結合できますreturn

return str(rlist)

また

return ''.join(rlist)
于 2010-10-31T19:26:25.560 に答える