Мне нужно сделать игру в кости на Python, но я получаю зависание, чтобы функции работали правильно.Ошибка «Variable not defined in function»
from random import randint
def rollAll5Die():
dice = []
for c in range(0,5):
dice.append(randint(1,6))
return dice
def outputUpdate(oTitle, diceList):
print(oTitle)
print(diceList)
print('')
def whichRoll():
rollWhich = input("Enter dice/die you want to roll again--1 2 3 4 or 5: ")
lRollAgain = rollWhich.split()
print(lRollAgain)
print('')
def rollSelected():
for i in lRollAgain:
rolledDice[int(i) - 1] = randint(1,6)
def dicePokerGame():
keepPlaying = True
while keepPlaying:
isPlay = input('Please enter "y" if you want to play another round of the dice game or "q" if you want to quit game: ')
print('')
if isPlay == 'y':
rolledDice = rollAll5Die()
outputUpdate("Roll of five dice", rolledDice)
nRollAgain = whichRoll()
rollSelected()
outputUpdate("Second Roll", rolledDice)
nRollAgain = input("Enter Dice you want to roll for final roll: ")
lRollAgain = nRollAgain.split()
print(lRollAgain)
print('')
for i in lRollAgain:
rolledDice[int(i) - 1] = randint(1,6)
print("Final Roll")
print(rolledDice)
print('')
#Score the hand Function
counts = [0] * 7
for value in rolledDice:
counts[value] = counts[value] + 1
if 5 in counts:
score = "Five of a Kind", 30
elif 4 in counts:
score = "Four of a Kind", 25
elif (3 in counts) and (2 in counts):
score = "Full House", 15
elif 3 in counts:
score = "Three of a Kind", 10
elif not (2 in counts) and (counts[1] == 0 or counts[6] == 0):
score = "Straight", 20
elif counts.count(2) == 2:
score = "Two Pair", 5
else:
score = "No Winnings", 0
print("Score")
print(score)
print('')
else:
keepPlaying = False
def main():
dicePokerGame()
main()
Когда я запускаю эту программу, она работает нормально, пока не получит функции rollSelected()
и дает мне ошибку. Ошибка говорит о том, что lRollAgain
не определен в функции rollSelected
.
Может ли кто-нибудь объяснить, почему он говорит, что lRollAgain
не определен в функциях rollSelected
? Потому что он находится в функции whichRoll
. Наверное, я просто не знаю, что он спрашивает.
переменные имеют «область действия». Просто потому, что вы определили переменную в одной функции, она не отображается в других функциях. Вам может потребоваться передать 'lRollAgain' в качестве параметра' rollSelected' (например, вы используете 'oTitle' и' diceList' для функции 'outputUpdate'. – Blorgbeard