Python 21点,总是平局20分

Python 21点,总是平局20分,python,random,Python,Random,该程序应该有两张卡片的用户抽签,然后是计算机选择。我希望这样,如果卡最终是一张脸卡,它会将值设置为10,并将Aces设置为用户输入1或11。目前,它将抽2张牌,无论结果如何,计算机和用户都将获得20分的平局 import random import easygui card_total = 0 ace_value = 0 #List of cards cards = {2,3,4,5,6,7,8,9,10,12,13,14,15} card1, card2 = random.sample(c

该程序应该有两张卡片的用户抽签,然后是计算机选择。我希望这样,如果卡最终是一张脸卡,它会将值设置为10,并将Aces设置为用户输入1或11。目前,它将抽2张牌,无论结果如何,计算机和用户都将获得20分的平局

import random
import easygui

card_total = 0
ace_value = 0

#List of cards
cards = {2,3,4,5,6,7,8,9,10,12,13,14,15}
card1, card2 = random.sample(cards,2)
#list of suits
suits = ['Clubs', 'Hearts', 'Spades', 'Diamonds']
suit1, suit2 = random.sample(suits, 2)
#converts number to face card name
if card1 == 12:
    card1 = 'Jack'
if card1 == 13:
    card1 = 'Queen'
if card1 == 14:
    card1 = 'King'
if card1 == 15:
    card1 = 'Ace'

if card2 == 12:
    card2 = 'Jack'
if card2 == 13:
    card2 = 'Queen'
if card2 == 14:
    card2 = 'King'
if card2 == 15:
    card2 = 'Ace'
#displays cards
first_card = ("your first card is the {} of {}") .format(card1,suit1)
second_card = ("your second card is the {} of {}") .format(card2,suit2)
print (first_card)
print (second_card)

#If draw is a face card set card value to ten
if card1 == 'Jack' or 'Queen' or 'King':
    card1 = 10
if card2 == 'Jack' or 'Queen' or 'King':
    card2 = 10
#If draw is an ace allow user to select value of ace
if card1 == 'Ace':
    ace_value = easygui.buttonbox('Do you want your ace value to be 1 or 11?','Blackjack',(1,11))
    card1 = ace_value

if card2 == 'Ace':
    ace_value = easygui.buttonbox('Do you want your ace value to be 1 or 11?','Blackjack',(1,11))
    card2 = ace_value

card_total = card1 + card2

#-------------------------------------------------------------------------
comp_list = [1,11]

comp_cards = {2,3,4,5,6,7,8,9,10,12,13,14,15}
comp_card1, comp_card2 = random.sample(comp_cards,2)

#converts number to face card name
if comp_card1 == 12:
    comp_card1 = 'Jack'
if comp_card1 == 13:
    comp_card1 = 'Queen'
if comp_card1 == 14:
    comp_card1 = 'King'
if comp_card1 == 15:
    comp_card1 = 'Ace'

if comp_card2 == 12:
    comp_card2 = 'Jack'
if comp_card2 == 13:
    comp_card2 = 'Queen'
if comp_card2 == 14:
    comp_card2 = 'King'
if comp_card2 == 15:
    comp_card2 = 'Ace'

if comp_card1 == 'Jack' or 'Queen' or 'King':
    comp_card1 = 10
if comp_card2 == 'Jack' or 'Queen' or 'King':
    comp_card2 = 10

#If draw is an ace computer randomly selects value
if comp_card1 == 'Ace':
    comp_ace_value = random.choice(comp_list)
    comp_card1 = comp_ace_value

if comp_card2 == 'Ace':
    comp_ace_value = random.choice(comp_list)
    comp_card2 = comp_ace_value

comp_select = comp_card1 + comp_card2
#-------------------------------------------------------------------------
print("##############################")
print("Your total is {}") .format(card_total)
print("Dealer total is {}") .format(comp_select)
#-------------------------------------------------------------------------
#Now begin Processing of game rules

if card_total > 21:
    print("You're bust! GAME OVER")
    exit()

if comp_select > 21:
    print("Dealer has gone over! You Win!")
    exit()

if card_total > comp_select and card_total <= 21:
    print("You have beaten the dealer! You Win!")

if card_total < comp_select and comp_select <= 21:
    print("You have been beaten!")

if card_total == comp_select:
    print("Tie game!")
随机导入
轻松导入
卡片总数=0
ace_值=0
#卡片清单
卡片={2,3,4,5,6,7,8,9,10,12,13,14,15}
card1,card2=随机。样本(卡片,2)
#诉讼清单
套装=[“梅花”、“红桃”、“黑桃”、“钻石”]
suite1,suite2=随机。样本(suites,2)
#将数字转换为人脸卡名称
如果card1==12:
card1='Jack'
如果card1==13:
card1=‘皇后’
如果card1==14:
card1=‘国王’
如果card1==15:
card1=‘Ace’
如果card2==12:
card2='Jack'
如果card2==13:
card2=‘女王’
如果card2==14:
card2=‘国王’
如果card2==15:
card2='Ace'
#展示卡片
first_card=(“您的第一张卡是{}中的{}”)。格式(card1,suit1)
第二张卡=(“你的第二张卡是{}中的{}”)。格式(card2,suit2)
打印(第一张卡)
打印(第二张卡)
#如果抽牌是正面牌,则将牌值设置为10
如果card1==‘杰克’或‘女王’或‘国王’:
card1=10
如果card2==‘杰克’或‘女王’或‘国王’:
card2=10
#如果绘图是ace,则允许用户选择ace的值
如果card1=='Ace':
ace_value=easygui.buttonbox('您希望您的ace值是1还是11?'、'Blackjack'、(1,11))
card1=ace_值
如果card2=='Ace':
ace_value=easygui.buttonbox('您希望您的ace值是1还是11?'、'Blackjack'、(1,11))
card2=ace_值
卡总数=卡1+卡2
#-------------------------------------------------------------------------
comp_list=[1,11]
复合卡={2,3,4,5,6,7,8,9,10,12,13,14,15}
comp_card1,comp_card2=随机样本(comp_cards,2)
#将数字转换为人脸卡名称
如果comp_card1==12:
comp_card1='Jack'
如果comp_card1==13:
comp_card1=‘皇后’
如果comp_card1==14:
comp_card1=‘国王’
如果comp_card1==15:
薪酬卡1=‘Ace’
如果comp_card2==12:
comp_card2='Jack'
如果comp_card2==13:
comp_card2=‘皇后’
如果comp_card2==14:
comp_card2=‘国王’
如果comp_card2==15:
comp_card2=‘Ace’
如果comp_card1==‘杰克’或‘女王’或‘国王’:
薪酬卡1=10
如果comp_card2==‘杰克’或‘女王’或‘国王’:
薪酬卡2=10
#如果draw是ace,计算机将随机选择值
如果comp_card1==“Ace”:
组合值=随机选择(组合列表)
补偿卡1=补偿值
如果comp_card2==“Ace”:
组合值=随机选择(组合列表)
comp_card2=comp_ace_值
comp_select=comp_card1+comp_card2
#-------------------------------------------------------------------------
印刷品
打印(“您的总数为{}”)。格式(卡片总数)
打印(“经销商总额为{}”)。格式(comp_select)
#-------------------------------------------------------------------------
#现在开始处理游戏规则
如果卡片总数>21:
打印(“你完蛋了!游戏结束”)
退出()
如果组件选择>21:
打印(“经销商已经过了!你赢了!”)
退出()

如果card_total>comp_select且card_total您的问题在这一行:

if comp_card1 == 'Jack' or 'Queen' or 'King':
这不是
操作符的工作方式。您需要重复该操作:

if comp_card1 == 'Jack' or comp_card1 == 'Queen' or comp_card1 == 'King':
或者更好地使用
中的
操作符:

if comp_card1 in ('Jack', 'Queen', 'King'):

您的问题在这一行:

if comp_card1 == 'Jack' or 'Queen' or 'King':
这不是
操作符的工作方式。您需要重复该操作:

if comp_card1 == 'Jack' or comp_card1 == 'Queen' or comp_card1 == 'King':
或者更好地使用
中的
操作符:

if comp_card1 in ('Jack', 'Queen', 'King'):