def main():
result = ""
cards = ["2","3","5","5","J"]
previous = cards[0]
current = cards[1]
i = 1
while i < len(cards) and result == "" :
previous = cards[i - 1]
current = cards[i]
if current == previous:
result = result + current
result = result + previous
i = i + 1
print(result)
main()
#需要使用2个字符,而不是我想要["2D","3C","5H","5D","JS"]
的数字列表,但我不知道该怎么做......
答案 0 :(得分:1)
在previous = [i-1]
行中,您忘了放cards[i-1]
如果你想把两位数字,但只比较你的牌数,你可以只比较字符串的第一个字符:
if current[0] == previous[0]:
result = result + current
result = result + previous
这打印给我5D5H
答案 1 :(得分:1)
String对象支持索引。例如
string = 'ABC123'
string[0] | 'A'
string[-1] | '3'
string[0:3] | 'ABC'
因此,通过使用if current[0] == previous[0]:
,您正在检查字符串的第一个值。
def main():
result = ""
cards = ["2D","3C","5H","5D","JS"]
previous = cards[0]
current = cards[1]
i = 1
while i < len(cards) and result == "":
previous = cards[i-1]
current = cards[i]
if current[0] == previous[0]:
result = previous + current
i = i + 1
print(result)
main()
答案 2 :(得分:0)
这是一个使用itertools
的更多Pythonic解决方案:
test.py
from itertools import tee
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
def main():
result = ""
cards = ["2D","3C","5H","5D","JS"]
# Generate adjacent pairs
for prev, curr in pairwise(cards):
# Append `prev` to `curr` if the first character is the same.
if prev[0] == curr[0]:
result = curr + prev
print(result)
if __name__ == "__main__":
main()
函数pairwise
将采用可迭代的s = ["s0", "s1", "s2", "s3"]
,它可以由两个相邻的元素迭代。也就是说,你可以看看&#34;当前&#34;和#34;下一个&#34;或者以前的&#34;和#34;当前&#34;。我之所以选择prev
和curr
是因为next
是Python中的关键字(请参阅pairwise
中的实际使用情况)。
您可以执行类似
的操作for prev, curr in pairwise(s):
print("prev: {}, curr: {}".format(prev, curr))
这将打印:
prev: s0, curr: s1
prev: s1, curr: s2
prev: s2, curr: s3
然后,您可以使用字符串索引检查每个字符串的第一个元素。
07:35 $ python3 test.py
5H5D