2015-11-21 3 views
0

Я пытаюсь создать список случайных нечетных чисел в определенном диапазоне с длиной списка, сгенерированным путем вызова другого случайного числа в PYTHON (а затем их записи в файл).Использование случайных чисел для определения длины списка случайных чисел

Я смог сгенерировать начальное случайное число (и выбрал вызывающего абонента, чтобы увидеть, что это было). Когда я пытаюсь использовать его как длину списка другого из случайно сгенерированных чисел, он не работает. Я не знаю, почему. Любое понимание было бы оценено. Вот что у меня есть ...

import random 

def main(): 
    digit_file = open("numbers.txt","w") 
    file_size = random.randint(4,7) 
    print (file_size) 
    print ("is the file size\n") 
    for n in range(file_size): 
     rand_output = random.randint(5,19) 
     if n %2 != 0: 
      print(rand_output) 
      digit_file.write(str(rand_output)) 
    digit_file.close 
    print("File was created and closed.") 
main() 
+0

В чем проблема? Код работает. Также не забудьте использовать скобки в 'digit_file.close()' – pythad

+0

@FadingCaptain. Как вы знаете, что это не работает? –

+0

Количество чисел, генерируемых rand_output, не равно file_size. –

ответ

0

Вы должны проверить, если rand_output % 2 != 0 не n % 2 != 0:

import random 


def main(): 
    digit_file = open("numbers.txt", "w") 
    file_size = random.randint(4, 7) 
    print(file_size) 
    print("is the file size\n") 
    while file_size: 
     rand_output = random.randint(5, 19) 
     if rand_output % 2 != 0: 
      print(rand_output) 
      digit_file.write(str(rand_output)) 
      file_size -= 1 
    digit_file.close() 
    print("File was created and closed.") 
main() 
+0

Я пробовал это, но сгенерированный число_файлов было 7, а количество цифр, сгенерированных rand_output, равнялось 5. –

+0

@FadingCaptain, я впервые понял вас неправильно. Я обновил свой ответ – pythad

+0

Блестящий! Я новичок в программировании и не помню, чтобы rand_output зависел от file_size. Почему в конце нужно вычесть 1 из file_size? –

1

Не уверены, чтобы понять, что вы ожидаете, но что об использовании choice?

from random import randint,choice 

def main(): 
    with open("numbers.txt","w") as digit_file: 
     file_size = randint(4,7) 
     print (file_size) 
     print ("is the file size\n") 
     for n in range(file_size): 
      rand_output = choice(range(5, 19, 2)) 
      print(rand_output) 
      digit_file.write(str(rand_output)) 
    print("File was created and closed.") 

main() 

Это может стать:

from random import randint,choice 

def main(): 
    with open("numbers.txt","w") as f: 
     file_size = randint(4,7) 
     print ("%dis the file size\n" % file_size) 
     f.write(''.join(str(choice(range(5, 19, 2))) for _ in range(file_size))) 
    print("File was created and closed.") 

main() 
Смежные вопросы