【问题标题】:functions and input for a deck of cards一副纸牌的功能和输入
【发布时间】:2020-08-16 03:10:26
【问题描述】:

我正在编写一个程序,该程序将输入自定义数量的花色和一副纸牌的值。这些可以被枚举和命名,列表将被合并(两个 + of + 俱乐部,或其他),然后可以洗牌。

我在 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()

【问题讨论】:

  • 当您提供默认参数时,这些语句会在定义函数时评估,不是每次调用函数时。

标签: python function


【解决方案1】:

如果您将函数放在定义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

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 2023-01-11
    • 2017-08-24
    • 2011-07-12
    • 2020-09-30
    • 2014-02-27
    • 1970-01-01
    • 2022-11-25
    相关资源
    最近更新 更多