2015-08-14 3 views
-4

Я написал ролик для кости, который генерирует случайные числа и вставляет их в список. Затем он печатает каждую итерацию в списке.Функция повтора не работает со списком Python

Это работает при первом запуске. Однако, когда его спросили: «Вы хотите переиздать?» и выбирая «y», я получаю ошибку StopIteration

Не следует ли переписывать список Python?

EDIT: Добавлено больше кода

File "./test.py", line 159, in diceRoller 
    sname = it1.next() 
StopIteration 




#imports 

import random 


#Stats start at 0 

acc = 0 
com = 0 
con = 0 
dex = 0 
fig = 0 
inl = 0 
per = 0 
str = 0 
wil = 0 


sname = 0 
statList = ['Acc', 'Com', 'Con', 'Dex', 'Fig', 'Int', 'Per', 'Str', 'Wil'] 
it1 = iter(statList) 



stat = [] 

def diceRoller(): 


    rollcount = 1 
    index = 0 
    print ' ' 
    print "Rolling 3 d6's for each stat" 

    print fmtt.format(' ', 'Stat','Your rolls', 'Total', 'Stat value') 

    while rollcount < 10: 

    die1 = random.randint(1,6) 
    die2 = random.randint(1,6) 
    die3 = random.randint(1,6) 
    total = sum([die1,die2,die3]) 

    rollcount += 1 


(removed large if block - that sets bonus value) 
    bonus = 4 


for item in range(1): 
    stat.append(bonus) 

#print stat 


#for i in range(1): 
    sname = it1.next() 


print fmt.format(' ', sname, die1, die2, die3, total, bonus) 



    else: 
    rroll = raw_input("Do you want to reroll? (y/n)") 
    if rroll == 'y': 
     diceRoller() 
    else: 
     statCalc()  

#### END DEF diceRoller 
+2

Так что 'it1' в этом коде ? –

+0

Также вы имеете в виду нечто вроде «вызов функции снова»? Потому что здесь нет 'repeat()'. (Я думал, что из вашего названия вы можете использовать ['itertools.repeat'] (https://docs.python.org/2/library/itertools.html#itertools.repeat) или [' numpy.repeat'] (http : //docs.scipy.org/doc/numpy/reference/generated/numpy.repeat.html)) –

+0

Это исключение, которое предполагается выбросить, когда итератор исчерпал значения. Нет, где почти достаточно информации здесь чтобы ответить на ваш вопрос. – rocktheartsm4l

ответ

0

Отправить statList функции diceRoller в качестве параметра, а затем положить

it1 = iter(statList) 

внутри этой функции

+0

Спасибо! это делало это намного легче, чем я ожидал. – Ippy