代码细节问题
"""随机发牌"""import random
#54张牌
cards = []
for i in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
for j in ["♠", "♥", "♣", "♦"]:
cards.append(f"{j}{i}")
cards.append("☼")
cards.append("☽")
#引用上一题的打乱函数
def fy_shuffle(x):
n = len(x)
v = []
for i in range(n):
z = random.randint(0, n-i-1)
v.append(x)
x = x[:z] + x
x = v
#定义发牌函数
def game(x, y, z):
people =
cards = fy_shuffle(cards)#打乱
x_cards = ' '.join(cards[:17])
y_cards = ' '.join(cards)
z_cards = ' '.join(cards)
landlord = random.randint(0, 2)
print(f"地主是:{people}")
print(" ")
if landlord == 0:
x_cards = ' '.join()])
elif landlord == 1:
y_cards = ' '.join()])
elif landlord == 2:
z_cards = ' '.join()])
print(f"[{x}]拿到的排是:{x_cards}")
print(f"[{y}]拿到的排是:{y_cards}")
print(f"[{z}]拿到的排是:{z_cards}")
#主体程序
player_1 = input("请输入第一位游戏玩家的名称:")
player_2 = input("请输入第二位游戏玩家的名称:")
player_3 = input("请输入第三位游戏玩家的名称:")
print(" ")
game(player_1, player_2, player_3)
这个代码在细节尚还有不少问题,求助,谢谢 你好,我注意到你的代码中有一些问题。首先,在函数fy_shuffle中,你使用了列表切片来对列表进行修改,但是这实际上并不会改变原始的cards列表,需要将x = v这行代码修改为x[:] = v,这样才能正确地修改原始列表。
另外,在主体程序中,你调用了game函数,但是在函数内部使用了全局变量cards覆盖了函数参数cards,这会导致函数无法正常工作。为了避免这个问题,你可以将生成的牌组作为参数传递给game函数。
下面是修复后的代码:
import random
# 54张牌
cards = []
for i in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
for j in ["♠", "♥", "♣", "♦"]:
cards.append(f"{j}{i}")
cards.append("🞈")# 癞子
cards.append("🞉")# 抢庄
# 打乱函数
def fy_shuffle(x):
n = len(x)
v = []
for i in range(n):
z = random.randint(0, n-i-1)
v.append(x)
x = x[:z] + x
x[:] = v
# 发牌函数
def game(player_1, player_2, player_3, cards):
people =
fy_shuffle(cards)# 打乱
x_cards = ' '.join(cards[:17])
y_cards = ' '.join(cards)
z_cards = ' '.join(cards)
landlord = random.randint(0, 2)
print(f"地主是: {people}")
print(" ")
if landlord == 0:
x_cards = ' '.join()])
elif landlord == 1:
y_cards = ' '.join()])
elif landlord == 2:
z_cards = ' '.join()])
print(f"[{player_1}]拿到的牌是: {x_cards}")
print(f"[{player_2}]拿到的牌是: {y_cards}")
print(f"[{player_3}]拿到的牌是: {z_cards}")
# 主体程序
player_1 = input("请输入第一位游戏玩家的名称: ")
player_2 = input("请输入第二位游戏玩家的名称: ")
player_3 = input("请输入第三位游戏玩家的名称: ")
print(" ")
game(player_1, player_2, player_3, cards)
希望这可以帮助到你!如果有任何其他问题,请随时提问。 您好!根据您提供的代码,我发现了一些问题并进行了修改。以下是修改后的代码:
import random
# 54张牌
cards = []
for i in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
for j in ["♠", "♥", "♣", "♦"]:
cards.append(f"{j}{i}")
cards.append("☼")
cards.append("☽")
# 打乱函数
def fy_shuffle(x):
n = len(x)
v = []
for i in range(n):
z = random.randint(0, n-i-1)
v.append(x)
x = x[:z] + x
return v
# 定义发牌函数
def game(x, y, z):
people =
shuffled_cards = fy_shuffle(cards)# 打乱
x_cards = ' '.join(shuffled_cards[:17])
y_cards = ' '.join(shuffled_cards)
z_cards = ' '.join(shuffled_cards)
landlord = random.randint(0, 2)
print(f"地主是:{people}")
print(" ")
if landlord == 0:
x_cards = ' '.join()])
elif landlord == 1:
y_cards = ' '.join()])
elif landlord == 2:
z_cards = ' '.join()])
print(f"[{x}]拿到的排是:{x_cards}")
print(f"[{y}]拿到的排是:{y_cards}")
print(f"[{z}]拿到的排是:{z_cards}")
# 主体程序
player_1 = input("请输入第一位游戏玩家的名称:")
player_2 = input("请输入第二位游戏玩家的名称:")
player_3 = input("请输入第三位游戏玩家的名称:")
print(" ")
game(player_1, player_2, player_3)
主要修改如下:
在 fy_shuffle 函数中,我添加了 return v 语句,以便将打乱后的列表返回给调用者。
在 game 函数中,我将 cards = fy_shuffle(cards) 修改为 shuffled_cards = fy_shuffle(cards),以便在函数内部使用打乱后的牌列表。
现在,这个代码应该可以正常运行并实现随机发牌功能
求最佳答案{:10_254:} 这段代码有几个细节问题需要解决:
1. 函数 fy_shuffle 没有返回打乱后的牌组,导致发牌函数中的 cards = fy_shuffle(cards) 并没有起到打乱牌组的作用。需要在 fy_shuffle 函数的最后添加 return x 语句。
2. 在发牌函数中,使用了全局变量 cards 作为牌组,但是在函数内部又定义了一个名为 cards 的局部变量,导致无法正确使用全局变量。为了解决这个问题,可以将全局变量 cards 改名为 all_cards ,并在发牌函数中使用 all_cards 来表示全局牌组。
3. 在发牌函数中,使用了 cards 变量作为打乱后的牌组,但是这个变量没有被定义。需要将 cards 改为 x ,即 x = v 。
修正后的代码如下:
import random
# 54张牌
all_cards = []
for i in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
for j in ["♠", "♥", "♣", "♦"]:
all_cards.append(f"{j}{i}")
all_cards.append("☼")
all_cards.append("☽")
# 打乱牌组函数
def fy_shuffle(x):
n = len(x)
v = []
for i in range(n):
z = random.randint(0, n-i-1)
v.append(x)
x = x[:z] + x
return x
# 定义发牌函数
def game(x, y, z):
people =
cards = fy_shuffle(all_cards)# 打乱牌组
x_cards = ' '.join(cards[:17])
y_cards = ' '.join(cards)
z_cards = ' '.join(cards)
landlord = random.randint(0, 2)
print(f"地主是:{people}")
print(" ")
if landlord == 0:
x_cards = ' '.join()])
elif landlord == 1:
y_cards = ' '.join()])
elif landlord == 2:
z_cards = ' '.join()])
print(f"[{x}]拿到的排是:{x_cards}")
print(f"[{y}]拿到的排是:{y_cards}")
print(f"[{z}]拿到的排是:{z_cards}")
# 主体程序
player_1 = input("请输入第一位游戏玩家的名称:")
player_2 = input("请输入第二位游戏玩家的名称:")
player_3 = input("请输入第三位游戏玩家的名称:")
print(" ")
game(player_1, player_2, player_3)
这样修改后的代码应该可以正确执行发牌功能。
页:
[1]