Есть ли способ использовать переменные raw_input в random.randint? - PullRequest
0 голосов
/ 05 января 2012

Я создаю игру, в которой «Компьютер» пытается угадать число, о котором вы думаете.Вот пара фрагментов кода:

askNumber1 = str(raw_input('What range of numbers do you want? Name the minimum number here.'))
askNumber2 = str(raw_input('Name the max number you want here.'))

Чтобы получить диапазон чисел, которые они хотят использовать для компьютера.

print 'Is this your number: ' + str(random.randint(askNumber1, askNumber2)) + '?'

Компьютер спрашивает, правильно ли он набрал номер,используя random.randint для генерации случайного числа.Проблемы состоят в том, что 1) это не позволит мне объединить строки и целые числа, и 2) не позволит мне использовать переменные в качестве минимальных и максимальных чисел.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 05 января 2012

Как вы предложили, randint требует целочисленных аргументов, а не строк.Поскольку raw_input уже возвращает строку, нет необходимости преобразовывать ее с помощью str();вместо этого вы можете преобразовать его в целое число, используя int().Однако обратите внимание, что если пользователь вводит что-то, не являющееся целым числом, например «hello», это вызовет исключение, и ваша программа закроется.Если это произойдет, вы можете попросить пользователя снова.Вот функция, которая вызывает raw_input несколько раз, пока пользователь не введет целое число, а затем возвращает это целое число:

def int_raw_input(prompt):
    while True:
        try:
            # if the call to int() raises an
            # exception, this won't return here
            return int(raw_input(prompt))
        except ValueError:
            # simply ignore the error and retry
            # the loop body (i.e. prompt again)
            pass

Затем вы можете заменить это для своих вызовов на raw_input.

1 голос
/ 05 января 2012

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

Однако вот что вы хотите сделать:

askNumber1 = int(str(raw_input('What range of numbers do you want? Name the minimum number here.')))
askNumber2 = int(str(raw_input('Name the max number you want here.')))

Вы сохраняете это как число, а не как строку.

0 голосов
/ 10 сентября 2017

Номера диапазонов были сохранены в виде строк.Попробуйте это:

askNumber1 =int(raw_input('What range of numbers do you want? Name the minimum number here.'))
askNumber2 =int(raw_input('Name the max number you want here.'))

Это для получения диапазона чисел, которые они хотят, чтобы компьютер использовал.

print 'Is this your number: ' + str(random.randint(askNumber1, askNumber2)) + '?'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...