【发布时间】:2015-01-15 02:56:27
【问题描述】:
我正在尝试使用 python 创建一个与扑克相关的程序。
当有人输入"9H"时,有没有办法将9与H分开?
【问题讨论】:
我正在尝试使用 python 创建一个与扑克相关的程序。
当有人输入"9H"时,有没有办法将9与H分开?
【问题讨论】:
【讨论】:
您可以使用其索引访问字符串中的每个单独字符,无需将输入转换为列表。如果只是两个字符,你总是可以这样做:
card = '9H'
number, suit = card[0], card[1]
或者更简单,我们可以解包字符串中的元素:
number, suit = card
现在number 将包含字符串值'9' 并且suit 将等于'H'。不过要小心边缘情况——我们如何处理像'10S' 这样的卡片?有点笨拙,但我们可以使用正则表达式,这将适用于所有有效的卡片输入:
import re
card = '10S'
number, suit = re.findall(r'(\d+)(\D)', card)[0]
【讨论】:
number, suit = card 就够了。
将其转换为列表:
$ python
Python 2.7.8 (default, Oct 30 2014, 18:30:15)
>>> "example"[0]
'e'
>>> "example"[1]
'x'
>>> list("example")
['e', 'x', 'a', 'm', 'p', 'l', 'e']
【讨论】:
请注意,如果您期待像 10H 而不是 TH 这样的输入,那么所有这些答案都会很可怕。在这种情况下,我会考虑从其余部分中剥离最后一个标记(应该始终是代表西装的单个字符)并改为这样做。
your_input = "10H"
rank, suit = your_input[:-1], your_input[-1]
这也适用于更多“正常”输入:
rank, suit = "9H"[:-1], "9H"[-1]
【讨论】: