Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme codage python

Aucune réponse
Avatar
soophiahrg
Bonjour,
Je dois coder le jeu 'black jack'. Au moment de proposer au joueur de rejouer la question se repose a nouveau comme si j'etait dans une boucle infinie alors que je n'utilise pas de while.

voici le programme:

import random

#1
def deck():
color=[“spades”, “diamonds”, “hearts”, “clubs”] #creation of a list of the 4 symbols
deck= #creation of an empty list
for s in color :
cards=[“2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “jack”, “queen”, “king”, “ace”] #creation of a list of the value
for n in cards :
c = n + " of " + s #c is the cards with a value and a symbole
deck.append(c) #add c to the empty list = deck of cards
return deck

#2
def valueCard(card) :
nb= card[0] #take only the first character of the string
if nb>=‘2’ and nb<=‘9’ :
value = int(card[0])
elif nb==‘1’ or nb==‘j’ or nb==‘q’ or nb==‘k’ :
value = 10
else :
value = int(input(“which value chosen ? ( 1 or 11 )”)) #ask the user to chose the value wanted
return value

#3
def initstack(n) : # n is the number of player chose by the user
p = #creation of an empty list
for i in range(0, n+1): # add n-deck of card to the empty list
y = deck() # y is a deck of card
p.extend(y) # add y to p
random.shuffle(y)
return p # p is list of the n-deck shuffled

#4
def drawCard(p,x=1): # x is the number of cards
dc = #creation of a empty list
for i in range (0, x) :
card = p[0] #card is the first element of the srting
dc.append(card) #add to the list dc
p.remove(card) #remove card from the list of n-deck
return dc #dc is the list of thge x-cards choosen

#1
def initPlayers(n):
joueurs =
for i in range (0, n ) :
name = input(“name of the player ?”)
joueurs.insert(i, name)
return joueurs

#2
def initScores(joueurs, v=0):
score = {}
for i in joueurs :
score[i] = v
return score

#3
def firstTurn(players):
scores =initScores(players, 0)
p = initstack(len(players))
for i in range(0, len(players)) :
cards = drawCard(p, 2)
print(cards)
score = 0
name = players[i]
for j in range(0, 2) :
v = valueCard(cards[j])
score = score + v
scores[name] = score
return scores

#4
def winner(scores) :
wins = 0
for key in scores:
if scores[key] > wins and wins<= 21 :
wins = scores[key]
name = key
return name, wins

def Continue() :
c = input(" do you want to continue ? yes/no “)
while c !=‘yes’ or c !=‘no’ :
c = input(” do you want to continue ? yes/no ")
if c ==‘yes’ :
return True
elif c ==‘no’ :
return False

def playerTurn(turn, namep, scores, p, x) :
print(‘BLACK JACK’)
print(‘turn number:’, turn)
print(‘the player is:’, namep)
print(‘current total of point:’, scores[namep])
savescore={}
if Continue()==True :
newcard= drawCard(p, x)
v = valueCard(newcard)
print(‘the value of the card is:’,v)
scores[namep]= scores[namep] + v
if scores[namep] == 21 :
print(‘YOU ARE THE WINNER !!!’)
elif scores[namep] > 21 :
print(‘YOU LOOSE’,)
savescore[namep]= scores[namep]
del scores[namep]
elif Continue()==False :
savescore[namep]= scores[namep]
del scores[namep]
print(‘END OF YOUR GAME’)

return scores[namep]
def gameTurn(joueurs, scores, p, x) :
scores2=dict(scores) #copy of the dictionary scores
turn = 1
for i in joueurs : #chose the player
if i in scores : #verify if the player is still in play
scores2 = scores2[i]+(playerTurn(turn, i, scores, p, x)) #upload the score of the player in the dictionary scores2
if scores2[i]==21: # if th score of the player is 21, the game stop
return scores2
elif not i in scores :
del scores2[i] #if the player is not in the dictionary scores it will be removed of the dictionary scores2, this signify the player decide to don’t continuate or the player loose
turn=turn+1
return scores2 #return the new dictionary with the new values of the players still in play

def gameOver(scores2):
flag = False
if (21 in scores2.value()) or (not scores2) : #if 21 is a value in scores2 or if scores2 is empty
flag = True # the game is finished
return flag

def findkey(scores2):
for i in scores2:
if scores2[i]==21:
winner=i
return winner

def completeGame(joueurs, scores, p, x):
nwin=initScores(joueurs, v=0)
gameround=gameTurn(joueurs, scores, p, x)
gO= gameOver(gameround)
while gO==True :
winner=findkey(gameround)
nwin[winner]=nwin[winner]+1
return nwin

main program …

n = int(input(‘nb of players ?’))
p = initstack(n)
playagain =‘yes’
nbgame=0
while playagain == ‘yes’ :
x = int(input(‘nb of cards ?’))
dc = drawCard(p, x)
joueurs = initPlayers(n)
score = initScores( joueurs, 0)
scores = firstTurn (joueurs)
BJgame= completeGame(joueurs, scores, p, x)
print(BJgame)
nbgame=nbgame+1
playagain=imput(‘Do you want to play an other time? (yes/no)’)
overallwinner = winner(BJgame)
print(‘you played:’, nbgame, ‘the overall winner is:’, overallwinner)

Réponses