2010-12-17 2 views
0

Функция randint (a, b) из случайного модуля Python возвращает «случайное» целое число в диапазоне от a до b, включая обе конечную точку. Заполните пробелы в приведенной ниже функции, которая создает и возвращает случайную строку из 0 и 1s длины n.Заполнить программу

from random import randint: 
def randString01(n): 
    _________________ 
    _________________ 
    for count in range(n): 
     __________________ 
    return________________ 

(Ed:. : в конце оператора импорта не принадлежит, это как представлено в оригинальный вопрос, однако)

... до сих пор я узнал, как сделать n в строку длины n (так что строка из n n) Я хочу знать, где будет применяться randint? До сих пор у меня есть

from random import randint 
def randString01(num): 
    x = str() 
    count = num 
    while count >0: 
     if randint(0,1) == 0: 
      append.x(0) 
     else: 
      append.x(1) 
     count -= 1 
    x=str(x) 
    return x 

, но он не работает. Что я должен исправить?

+0

Покажите нам свой код, который вы пробовали, а не код вашего учителя. Что этот код имеет какое-либо отношение к тому, чтобы сделать n в строку длины n? – Falmarri 2010-12-17 02:30:25

+0

@gnibbler: AFAICT, проблема была представлена ​​ОП, как указано в их собственном домашнем листе. Я не думаю, что он должен быть изменен. – 2010-12-17 02:32:25

+3

Будут ли люди останавливаться на голосовании? ОП не просил осыпать ложкой. – 2010-12-17 02:35:13

ответ

5

Поскольку это домашнее задание, я не дам вам ответ, но вот некоторые наводящие вопросы:

  • Как бы вы использовать randint(a,b), чтобы дать вам 0 или 1?
  • Как вы преобразовываете целое число в строку?
  • Как вы можете создать строку с циклом for?

Если вы можете ответить на эти вопросы, вы решили проблему.

1

Поскольку это явно классной, вот некоторые псевдо-код, чтобы начать с:

define randString01(num): 
    set str to "" 
    count = num 
    while count is greater than zero: 
     if randint(0,1) is zero: 
      append "0" to str 
     else: 
      append "1" to str 
     subtract one from count 
    return str 

Ваша строка n вхождений символа n здесь не поможет, кстати. Он либо даст вам нулевую «0» строку, либо одну строку «1». Другими словами, все.


Хорошо, что у вас есть в вашем комментарии, кажется, все в порядке (по крайней мере, в структуре):

from random import randint 
def randString01(num): 
    x = str()      ## <-- ??? 
    count = num 
    while count > 0: 
     if randint(0,1) == 0: 
      append.x(0)    ## <-- ??? 
     else: 
      append.x(1)    ## <-- ??? 
     count -= 1 
    x = str(x)      ## <-- ??? 
    return x 

, но я просто немного неуверенный о ваших str() и append() линий. Так как вы сделали большую часть работы, здесь мои незначительные изменения, чтобы получить это происходит под Python:

from random import randint 
def randString01(num): 
    x = "" 
    count = num 
    while count > 0: 
     if randint(0,1) == 0: 
      x = x + "0" 
     else: 
      x = x + "1" 
     count -= 1 
    return x 

print randString01(7)    ## And add these to call the function. 
print randString01(7) 
print randString01(9) 
print randString01(9) 

Это выходы:

1011000 
1010011 
110001000 
110101001 
0

, если вы не должны использовать точный синтаксис выше, это может быть выполнено с помощью 1 строки кода.

понятия:

string.join принимает итератор вы можете создать итератор случайной строки на встраивание для цикла, чтобы в списке понимание

полученный код следующим образом.

''.join([str(random.randint(0,1)) for i in range(n)]) 
Смежные вопросы