本周我们的实验室任务是制作一个在Python 3中运行的简单版本的二十一点。我已经完成了大部分任务,但我遇到了需要确定每张卡点数的部分。这是我所关注的细分代码的模型。
date
Playerhand是一个列表,包含1-10或A,J,Q或K之间的2或3个随机字符串(这些是aces和face卡)。就目前而言,我想不出一种简单的方法可以将playerhand的值转换为整数,而无需使用一堆elif语句将每个字符串转换为整数对应的字符串。我不能使用playerhand [x],因为for循环无论如何都要遍历playerhand中的每个值。我已经有一段时间了,如果有人能提供一些帮助,我真的很感激。
答案 0 :(得分:1)
首先,你在循环中滥用playerhand
。给定循环表达式for i in playerhand
,i
表示列表的单个元素。因此,在循环内部,您应该使用i
而不是playerhand
来引用当前元素。 playerhand
仍然引用整个列表。
通过此更改,您调用int()
的解决方案可能正常。一个更好的整体解决方案是使用评论中已经建议的字典,但鉴于这是一个实验室分配,它可能仅供您使用某些数据结构。
另一个解决方案是拥有一个包含所有可能字符串的列表,以及包含相应分数的相同长度的第二个列表。在第一个列表中找到一个给定的字符串,然后在同一个位置找到第二个列表的元素,这就是得分。
答案 1 :(得分:0)
我立即看到的给定代码文本中的问题是使用playerhand
而不是i
; for i
表示从列表开头按顺序排列的playerhand
的每个值。
其他一切看起来好像工作得很好,但是使用字典可能也是一个好方法。虽然您将此作为实验室作业,但这可能比您的老师正在寻找的更多。