python - 一副纸牌的功能和输入
问题描述
我正在编写一个程序,该程序将输入自定义数量的花色和一副纸牌的值。这些可以被枚举和命名,列表将被合并(两个 + 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()
解决方案
如果您将函数放在定义的地方创建输入,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
推荐阅读
- node.js - 为什么MongoDB创建一个空文档?
- java - 无法将更新的对象值从客户端发送到服务器,服务器读取不存在的值
- c# - 如何在编辑模式下防止gridview行选择。(asp.net服务器端)
- angular - Angular 中的 tns-core-modules 突然模块解决错误
- python - 在 Airflow 中将文件上传到 GCS 存储桶
- c++ - c++ 在抛出'std::out_of_range' std::vector 的实例后调用终止
- range - 交易视图 ATR TP SL
- spring-boot - 从 docker-compose 获取端口 8080 已在使用中错误
- swift - jonkykong/SideMenu 选中时更改背景颜色文本颜色
- amazon-web-services - 如何查看我在 AWS 中创建的 LINUX 虚拟服务器