функция шифрования не будет выводиться - PullRequest
0 голосов
/ 31 октября 2010

эта функция не выдаст мне вывод при тестировании в 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')

Я потратил много времени, пытаясь выяснить проблему, но код кажется мне хорошим.

Ответы [ 2 ]

0 голосов
/ 31 октября 2010

Пара замечаний:

Не используйте 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 могут быть объединены в один return:

return str(rlist)

или

return ''.join(rlist)
0 голосов
/ 31 октября 2010

Правильное форматирование, похоже, решает проблему.

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 () вы вернули строку, но ничего не сделали с указанной строкой.

...