我正在使用python为Udacity课程编写扑克程序。我正在使用的其中一个定义是我在课程中使用的以下内容。
def card_ranks(cards):
"Return a list of the ranks, sorted with higher first."
ranks = ['--23456789TJQKA'.index(r) for r,s in cards]
ranks.sort(reverse=True)
return ranks
所以这意味着例如cards_ranks([TH,9C,9D,7S])应该返回[10,9,9,7]。但是我收到以下错误
ValueError Traceback (most recent call
last)
<ipython-input-13-ff8fb242bb41> in <module>()
----> 1 card_ranks(['9H','8C','7C','10D'])
<ipython-input-12-7eaf1ab781bc> in card_ranks(cards)
1 def card_ranks(cards):
2 "Return a list of the ranks, sorted with higher first."
----> 3 ranks = ['--23456789TJQKA'.index(r) for r,s in cards]
4 ranks.sort(reverse=True)
5 return ranks
ValueError: too many values to unpack
有谁知道如何修复它?顺便说一下,我是列表理解的新手,我确实试过以下自己,如果只使用卡片中的数字,则可以使用
def card_ranks(cards):
"Return a list of the ranks, sorted with higher first."
ranks = [r[0] for r in cards]
ranks.sort(reverse=True)
return ranks
很自然地我尝试了
def card_ranks(cards):
"Return a list of the ranks, sorted with higher first."
ranks = ['--23456789TJQKA'.index(r[0]) for r in cards]
ranks.sort(reverse=True)
return ranks
但那也行不通。我真的很感激任何帮助,代码是有效的,但是当我使用它时它不会。我正在使用Jupyter笔记本。
答案 0 :(得分:3)
值'10D'
是一个包含三个字符的序列,这些字符值过多,无法解压缩到r,s
。
如果您改用'TD'
,它应该有用。
答案 1 :(得分:1)
你做的最后一个代码是对的。但是你有一个小错误。
看起来你有&#39; 10D&#39;卡。因此,当您执行r[0]
时,您会得到“1&#39;”。
但是你的索引字符串中没有这种情况。所以'--23456789...'.index(r[0])
会引发异常。
正确的代码将是这样的*:
def card_ranks(cards):
"Return a list of the ranks, sorted with higher first."
ranks = ['--234567891TJQKA'.index(r[0]) for r in cards]
ranks.sort(reverse=True)
return ranks
*(取决于哪个索引应该有10张卡和哪张卡(T,J,Q,K,A)
答案 2 :(得分:1)
unpack
变为太少的变量。在list comprehension
:
ranks = ['--23456789TJQKA'.index(r) for r,s in cards]
card
cards
r
s
变量variables
和a, b = "xy"
。为简化此操作,您只需以相同的方式分配a
:
'x'
现在b
为y
而card
持有list
。
但是,您的问题来自10D
:unpack
中的最后一个card
。您正尝试3
chars
2
a, b = "10D"
ValueError
仅变ValueError: too many values to unpack (expected 2)
个变量。这可以再次简化为尝试:
error
会抛出相同的TD
:
10D
当你明白你想要让计算机做什么时,它实际上是完全有意义的。
要修复此unpacked
,只需将卡片值传递为2
而不是r
,这样就可以将s
正确地传入r, s = "TD"
# r <-- "T"
# s <-- "D"
变量:error
和function
:
npm install npm@4.2.0 -g
这应该摆脱你的this.todayDate = new Date();
this.dateToday = (this.todayDate.getFullYear() + '-' + ((this.todayDate.getMonth() + 1)) + '-' + this.todayDate.getDate() + ' ' +this.todayDate.getHours() + ':' + this.todayDate.getMinutes()+ ':' + this.todayDate.getSeconds());
,console.log('today date', this.dateToday);
将正确输出。的:)强>