2015-01-22 17 views
1

новичка Всего здесь,Использование переменного в randint аргумента

Я пишу программу, которая катится костьми для пользователя, и я хочу, чтобы иметь возможность изменить количество граней матрицы на ввод данных пользователя. Я не могу показаться, чтобы получить переменную amount_faces работать как межд для функции randint(), я получаю «TypeError: не сцеплять„ул“и„INT“objetcts» ошибка каждый раз:

from sys import exit 
from random import randint 

def start(): 
    print "Would you like to roll a dice?" 
    choice = raw_input(">") 
    if "yes" in choice: 
     roll() 
    elif "no" in choice: 
     exit() 
    else: 
     print "I can't understand that, try again." 
     start() 

def roll(): 
    print "How many faces does the die have?" 
    amount_faces = raw_input(">") 
    if amount_faces is int: 
     print "The number of faces has to be an integer, try again." 
     roll() 
    else:    
     print "Rolling die...." 
     int(amount_faces) 
     face = randint(1,*amount_faces) 
     print "You have rolled %s" % face 
     exit() 

start() 

Любой ключи?

ответ

1

int(amount_faces) не меняется amount_faces на месте. Вам необходимо присвоить целое число объекта функции вернет:

amount_faces = int(amount_faces) 

amount_faces не является итерация, так что вы не можете использовать *arg синтаксис здесь:

face = randint(1,*amount_faces) 

Вы должны удалить *:

face = randint(1, amount_faces) 

Вы также не испытывая для целых чисел правильно здесь:

if amount_faces is int: 

int - тип объекта, amount_faces - всего лишь строка. Вы можете поймать ValueError брошенный int(), чтобы обнаружить, что вход не был конвертируемым, вместо:

while True: 
    amount_faces = raw_input(">") 
    try: 
     amount_faces = int(amount_faces) 
    except ValueError: 
     print "The number of faces has to be an integer, try again." 
    else: 
     break 

print "Rolling die...." 
face = randint(1, amount_faces) 
print "You have rolled %s" % face 

Вы, вероятно, хотите, чтобы проверить Asking the user for input until they give a valid response и не использовать рекурсию для управления программой.

+0

Ну, это сработало. Благодаря! – faeder

Смежные вопросы