任务:https://www.codewars.com/kata/535742c7e727388cdc000297/train/python
您需要生成一副 52 张牌的牌 - 四种花色,每花色 13 张牌。
牌的等级是:A、二、三、四、五、六、七、八、九、十、J、Q、K
结论应该是这样的
地图的每一行都将采用以下格式
"ace of hearts"
"ace of spades"
"ace of diamonds"
"ace of clubs"
他们不必按顺序进行。
附加限制 - 仅一行
一行代码不通过
import random
dict_card_format = {1: "hearts", 2: "spades", 3: "diamonds", 4: "clubs"}
dict_rank = {1: "ace", 2: "two", 3: "three", 4: "four", 5: "five", 6: "six", 7: "seven",
8: "eight", 9: "nine", 10: "ten", 11: "jack", 12: "queen", 13: "king"
}
nums = list(range(1, 5))
random.shuffle(nums)
nums1 = list(range(1, 14))
random.shuffle(nums1)
def deck_of_cards():
return [f"{''.join(dict_rank[j])} of {''.join(dict_card_format[i])}" for j in nums1 for i in nums]
由 CodesWars 服务器发布
Test Results:
Code lines
Tests
1 line only!: 13 should equal 1 - этот Тест не проходит
Completed in 0.09ms
Completed in 0.14ms
Sample tests - этот Тест проходит
Tests
如果单行代码不起作用,那么如何在一行中输出函数输出?
我尝试用不同的方式写它
def deck_of_cards():
n_card_format = 4
n_rank = 13
nums = list(range(1, 5))
random.shuffle(nums)
card_format = nums[:4]
nums1 = list(range(1, 14))
random.shuffle(nums1)
rank_list = nums1[:13]
# s = ""
lst = []
for i in card_format:
for j in rank_list:
if i in dict_card_format and j in dict_rank:
lst.append(f"{''.join(dict_rank[j])} of {''.join(dict_card_format[i])}")
# lst.append(''.join(dict_rank[j]) + " " + "of" + " " + ''.join(dict_card_format[i]))
# s += (''.join(dict_rank[j]) + " " + "of" + " " + ''.join(dict_card_format[i]) + " ")
# s += "\n"f"{''.join(dict_rank[j])} of {''.join(dict_card_format[i])} "
return lst
帮我找到正确的解决方案