Как вы предложили, 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
.