Я написал ролик для кости, который генерирует случайные числа и вставляет их в список. Затем он печатает каждую итерацию в списке.Функция повтора не работает со списком 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
Так что 'it1' в этом коде ? –
Также вы имеете в виду нечто вроде «вызов функции снова»? Потому что здесь нет '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)) –
Это исключение, которое предполагается выбросить, когда итератор исчерпал значения. Нет, где почти достаточно информации здесь чтобы ответить на ваш вопрос. – rocktheartsm4l