'\r' 是做什么的,在给定的场景中我将如何使用它? (Python)

what does '\r' do and how would I use it in a given scenario? (Python)

我一直在尝试为纸牌游戏制作程序,快速总结:编写一个 python 脚本来创建随机纸牌,将纸牌表示为元组,存储纸牌值和颜色.

其中一个条件是,当我循环 3 次时,我必须确保每张卡片的值和颜色都与其余卡片不同,这样就没有两张卡片是相同的。 (创建第二张卡片时,检查是否与第一张相同,如果相同,请重试。

创建第三张卡时,检查是否与第一张相同 或者第二个,如果是,再试一次。)

然后我必须创建一个函数,将 3 张牌的价值加在一起 ​​returns 总和。

当然,还有更多,但我的问题很简单。到目前为止我所做的:

import random

num = random.randint(0,9)
colour = random.choice(["red", "green", "blue", "yellow"])
card = (num, colour)

def get_uno_card(card):
  for _ in range(1):
    print(card)
    if num and colour == card:
      print(card)
      
  return card
  
def convert():
  a = str(card)
  return a

def add():
  b = num * 3
  return b

a = convert()
b = add()
  
print(get_uno_card(card))
print(a)
print(b)

这输出:

(6, 'blue')
(6, 'blue')
(6, 'blue')
18

我无法确保卡片不相同,因此我正在寻找在线执行此操作的方法,post 他们解释说我应该使用“/r”。我没有遇到过这个,也不知道在这种情况下我应该如何使用它,或者我是否应该使用它。

谁能解释一下我如何检查这 3 个元组是否相同,如果相同,我将如何生成另一张卡片来代替它?

\rcarriage return character, and has nothing at all to do with the problem you're describing, which is one of sampling without replacement.

确保您没有两次拥有同一张卡片的简单方法是制作 所有 张卡片的“套牌”(在 Python 中是很容易表示为 list) 而不是单独生成每张卡片。

对于一副真正的纸牌,你不能两次得到同一张牌,因为你在发牌时将牌从牌堆中移除; list 以同样的方式使用你的 popping 项目。

>>> import random
>>> cards = [(num, color) for num in range(10) for color in ["red", "green", "blue", "yellow"]]
>>> random.shuffle(cards)
>>> cards.pop()
(3, 'blue')
>>> cards.pop()
(4, 'yellow')
>>> cards.pop()
(5, 'blue')

将此放在您已经尝试实施的一些事情的上下文中:

import random

deck = [
    (num, color)
    for num in range(10)
    for color in ("red", "green", "blue", "yellow")
]
random.shuffle(deck)

def get_uno_card():
    return deck.pop()

def add_cards(cards):
    return sum(num for num, color in cards)

cards = [get_uno_card() for _ in range(3)]
print(cards)
print(add_cards(cards))
[(9, 'yellow'), (9, 'blue'), (3, 'yellow')]
21