import random def fresh_deck(): suits=["Spade","Heart","Diamond","Club"] ranks=[2,3,4,5,6,7,8,9,10,"J","Q","K","A"] deck=[] for suit in suits: for rank in ranks: deck.append({"suit": suit, "rank" : rank}) random.shuffle(deck) return deck #clear! def hit(deck): if deck==[]: deck= fresh_deck() card=deck[0] return card, deck[1:] #clear! def count_score(cards): score=0 number_of_ace=0 for card in cards: if card["rank"]=="A": number_of_ace=1+number_of_ace score+=11 elif (card["rank"]=="J" or card["rank"]=="K" or card["rank"]=="Q"): score+=10 else: score+=card["rank"] while(score>21 and number_of_ace>0): number_of_ace-=1 score-=10 return score #clear! def show_cards(cards,message): print(message) for card in cards: print(card["suit"]+' '+str(card["rank"])) #clear! def more(message): answer=input(message) while not(answer=="y" or answer=="n"): answer=input(message) if answer=="y": return True else: return False #clear! def load_members(): file=open("members.txt","r") members={} for line in file: name, passwd, tries, wins, chips=line.strip('\n').split(',') members[name]=(passwd,int(tries),float(wins),int(chips)) file.close() return members def store_members(members): file=open("members.txt","w") names=members.keys() for name in names: passwd,tries,wins,chips=members[name] line=name+","+passwd+","+str(tries)+","+str(wins)+","+str(chips)+'\n' file.write(line) file.close() def divide(x,y): if y!=0: return x/y else: return 0 def login(members): username=input("Escribe tu apodo : (4 Caract max) ") while len(username)>4: username=input("Escribe tu apodo : (4 Caract max) ") trypasswd=input("Escribe tu contraseña: ") if username in members.keys(): if trypasswd==members[username][0]: tries=members[username][1] wins=members[username][2] chips=members[username][3] print("You played",tries,"games and won",wins,"of them.") print("your all_time winning percentage is","{0:.1f}".format(100*divide(wins,tries)),"%.") if chips>=0: print("you have",chips,"chips") else: print("you owe",chips,"chips") return username,trypasswd,tries,wins,chips,members else: return login(members) else: members[username]=(trypasswd,0,0,0) return username,trypasswd,0,0,0,members def show_top5(members): print("-----") sorted_members=sorted(members.items(),key=lambda x:x[1][3],reverse=True)[:5] print("All-time Top 5 based on the number of chips earned") for a in range(len(sorted_members)): if sorted_members[a][1][3]!=0: print(sorted_members[a][0],sorted_members[a][1][3]) #ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ def blackjack(): print("Blackjack Motín Pirata!") members=load_members() username,passwd,tries,wins,chips,members=login(members) deck=fresh_deck() count_win=0 count_try=0 while True: count_try+=1 dealer=[] player=[] card,deck=hit(deck) # pick 1 player.append(card) # give player card,deck=hit(deck) # pick 1 dealer.append(card) # give dealer card,deck=hit(deck) # pick 1 player.append(card) # give player card,deck=hit(deck) # pick 1 dealer.append(card) # give dealer print("dealer's cards are: ") print(" ","****","**") print(" ",dealer[1]["suit"],dealer[1]["rank"]) show_cards(player,"player's cards are: ") score_player=count_score(player) score_dealer=count_score(dealer) if score_player==21: print("blackjack! player win") chips+=2 count_win+=1 print("Chips =",chips) else: while score_player<21 and more("Hit? (y/n)" )==True: card,deck=hit(deck) player.append(card) score_player=count_score(player) print(" ",card["suit"],card["rank"]) if score_player>21: print("player bust! dealer won") chips -=1 print("chips =", chips) else: while score_dealer<=16: card,deck=hit(deck) dealer.append(card) score_dealer=count_score(dealer) show_cards(dealer,"Dealer's cards are:") if score_dealer>21: print("dealer bust! player won") chips+=1 count_win+=1 elif score_dealer==score_player: print("we draw") count_win+=0.5 elif score_dealer < score_player: print("player won.") chips+=1 count_win+=1 else: print("dealer won") chips -=1 print("chips =",chips) if not more("Play more? (y/n) "): break wins+=count_win tries+=count_try members[username]=passwd,tries,wins,chips store_members(members) print("You played",count_try,"games and won",count_win,"of them.") print("Your winning percentage today is","{0:.1f}".format(100*divide(count_win,count_try)),"%.") show_top5(members) print("Bye!") blackjack()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question