Как мне сгенерировать определенное количество случайных чисел? - PullRequest
0 голосов
/ 12 ноября 2019

Я должен попросить пользователя ввести число, а затем вывести ровно столько случайных чисел, сколько указано пользователем с помощью цикла while.

import random

x = int(input("Write a number: "))
y = random.randint(0, 10)

while x != 0:
    print(y)
    y = random.randint(0, 10)

Ответы [ 4 ]

1 голос
/ 12 ноября 2019

Ваша петля while будет вращаться вечно, потому что вы никогда не уменьшаете x. Вы можете исправить это, добавив это в тело вашего цикла:

x -= 1

Если вы не хотите, чтобы оно вращалось вечно, когда пользователь вводит отрицательное число (с тех пор оно будет уменьшаться вечно, не нажимая0), вы можете изменить while на:

while x > 0:

Более простой / стандартный / идиоматический способ сделать этот тип цикла будет использовать for ... in range:

for _ in range(x):
    print(random.randint(0, 10))
1 голос
/ 12 ноября 2019

Вы можете использовать random.choices, чтобы выбрать 10 значений из диапазона.

x = int(input("Write a number: "))
values = list(random.choices(range(11), k=x))

Для большего диапазона вы, вероятно, предпочтительнее будете делать повторные вызовы random.randint.

values = [random.randint(0,10) for _ in range(x)]
1 голос
/ 12 ноября 2019

Маленькая модификация вашего кода. Вы не уменьшались x

import random

x = int(input("Write a number: "))

while x != 0:
    y = random.randint(0, 10)
    print(y)
    x-=1

0 голосов
/ 12 ноября 2019

Я хотел отметить, что цикл for гораздо предпочтительнее цикла while, но Сэм Стаффорд опередил меня! Решение для понимания списков также хорошо.

Я знаю, что ваш код - всего лишь пример, но имена этих переменных действительно плохие, будьте осторожны. В любом случае, вот решение numpy, оно может пригодиться когда-нибудь!

import numpy as np

num_to_gen = int(input("Choose how many random numbers to generate: "))

rand_nums = np.random.randint(low=0, high=11, size=num_to_gen).tolist()

print(rand_nums)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...