一副牌的功能和输入



我正在编写一个程序,该程序将为一副牌接受自定义数量的套装和值的输入。这些可以被列举和命名,列表将被合并(两个+俱乐部,或其他什么(,然后可以洗牌。

我和while循环相处得很好,但在学习函数时,我觉得我缺少了一些逻辑。问题是,代码是有效的。我只是觉得它会起作用的原因与它不同。

例如,在do_the_stuff((中,我要求它打印一条消息,然后运行一系列组装甲板的函数。它同时做这两件事,但顺序相反。

我注意到,如果我删除对函数内部带有INPUT的调用,它们无论如何都会运行,这是我没有预料到的。如果它们无论如何都在运行,那么首先,它们如何保存信息,直到稍后被组装信息的其他函数调用?

这是代码:

import random
def suit_generator():

a = int(input("How many suits in this deck: "))
suits = []

for i in range(a):
new_suit = input(f"Name suit No. {i+1} - ")
suits.append(new_suit)

return suits

def value_generator():

a = int(input("How many values for each suit: "))
values = []

for i in range(a):
new_value = input(f"Name value No. {i+1} - ")
values.append(new_value)
return values

def merge_suits_and_values(s = suit_generator(), v = value_generator()):

deck = []
suit_counter = 0

for i in s:

value_counter = 0
for x in v:
new_card = f"the {v[value_counter]} of {s[suit_counter]}"
deck.append(new_card)
value_counter += 1

suit_counter += 1
return deck
def display_deck():

deck = merge_suits_and_values()
counter = 0
for i in deck:
print(f"{counter + 1} {deck[counter]}")
counter += 1
def shuffle_deck():
deck = merge_suits_and_values()
random.shuffle(deck)
counter = 0
for i in deck: 
print(f"{counter + 1} - {deck[counter]}")
input()
counter += 1
def do_the_stuff():

print("Let's create and then shuffle a custom deck of cards.")
display_deck()
print("This is the shuffled deck, dealing one card at a time:")
input()
shuffle_deck()
do_the_stuff()

如果将创建输入的函数放在定义merge_suits_and_values的位置,它将在定义merge_suits_and_values时评估这些函数。这应该行得通。

def merge_suits_and_values(s, v) #when defining
merge_code_suits_and_values(suit_generator(), value_generator) #when calling

最新更新