我正在按照他们编码的方式编写一个简单的二十一点程序,我需要将“ A”排序到列表的末尾,因此必须按字母顺序将其反转,并且在检查所有数字之前都应对其进行检查
部分代码:
oyuncukart = []
eroskart = []
oyuncuToplam = 0
erosToplam = 0
def Donustur(El,oyuncuTop):
aTane = El.count("A")
for kart in El:
if "2" == kart:
oyuncuTop += 2
if "3" == kart:
oyuncuTop += 3
if "4" == kart:
oyuncuTop += 4
if "5" == kart:
oyuncuTop += 5
if "6" == kart:
oyuncuTop += 6
if "7" == kart:
oyuncuTop += 7
if "8" == kart:
oyuncuTop += 8
if "9" == kart:
oyuncuTop += 9
if "10" == kart:
oyuncuTop += 10
if "J" == kart:
oyuncuTop += 10
if "Q" == kart:
oyuncuTop += 10
if "K" == kart:
oyuncuTop += 10
if "A" == kart and aTane == 1 and oyuncuTop <= 10:
oyuncuTop += 11
elif "A" == kart and aTane == 1 and oyuncuTop > 10:
oyuncuTop += 1
elif "A" == kart and aTane > 1 and oyuncuTop < 10:
oyuncuTop += 11
elif "A" == kart and aTane > 1 and oyuncuTop >= 10:
oyuncuTop += 1
return oyuncuTop
kartlar = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
oyuncukart.append(random.choice(kartlar))
oyuncukart.append(random.choice(kartlar))
oyuncukart.sort(reverse=True)
答案 0 :(得分:1)
您不想按字母顺序按数字或排序(是否反转);您需要非常特殊的排序顺序>>> import random
>>> kartlar = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
>>> random.shuffle(kartlar)
>>> kartlar
['6', '4', '10', 'J', '2', 'A', 'K', '8', '3', '5', 'Q', '9', '7']
>>> sorted(kartlar, key=card_val)
['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
。
您可以在命令本身内对2,3,4,5,6,7,8,9,J,Q,K,A
施加自定义顺序:
sort
这可能会产生(抽奖多于2个-但仅与 sort 顺序有关,所以这无关紧要)这样的序列:
oyuncukart.sort(key=["2","3","4","5","6","7","8","9","10","J","Q","K","A"].index)
答案 1 :(得分:0)
我将以一种不同的方式来处理此问题,该函数将返回可以用作key
的{{1}}自变量的卡的值。这将为我们提供以下内容:
代码:
sorted()
用法:
face_cards = {'J': 11,
'Q': 12,
'K': 13,
'A': 14}
def card_val(card):
try:
return int(card)
except ValueError:
return face_cards[card]
kartlar = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
sorted_kartlar = sorted(kartlar, key=card_val)