尝试使用两个字符而不仅仅是一个字符

时间:2015-12-11 11:53:02

标签: python-3.x

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"]的数字列表,但我不知道该怎么做......

3 个答案:

答案 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;。我之所以选择prevcurr是因为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