python - 如何按字母顺序对列表进行反向排序,但首先是数字
问题描述
我正在编写一个简单的二十一点程序,他们按照我的编码方式我需要将“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)
解决方案
您不想按数字或字母顺序(反转与否)排序;你想要非常特殊的排序顺序2,3,4,5,6,7,8,9,J,Q,K,A
。
您可以sort
在命令本身内部应用自定义顺序:
oyuncukart.sort(key=["2","3","4","5","6","7","8","9","10","J","Q","K","A"].index)
这可能会产生(抽签次数超过 2 次——但这只是关于排序顺序,所以这并不重要)如下所示的序列:
['2', '10', 'J', 'Q', 'A']
推荐阅读
- java - Java Hashmap containsKey 为现有键返回 false
- c - 为什么两个操作数的结果类型应该与操作数的类型匹配?
- android-studio - Gradle 在 android studio 中不起作用 [flutter]
- c++ - 转换类型
布尔,怎么了? - indexing - 设置索引!没有为 WeakRefStrings 定义。SpringArray{String,1}
- c# - 如何将端点映射到 ASP 中的静态文件。网络核心?
- php - Singleton 在 Laravel 中反复运行
- twilio - 使用 CAD 的 Twilio Studio 支付连接器
- java - 在java中设置运行while循环的限制
- azure-data-factory - 映射数据流错误流未连接或列不可用