繁体   English   中英

返回的变量未在 python 中定义

[英]Returned variable are not defined in python

import random
cards = ["Red 1", "Red 2", "Red 3", "Red 4", "Red 5", "Red 6", "Red 7", "Red 8", "Red 9", "Red 10", "Blue 1", "Blue 2", "Blue 3", "Blue 4", "Blue 5", "Blue 6", "Blue 7", "Blue 8", "Blue 9", "Blue 10", "Black 1", "Black 2", "Black 3", "Black 4", "Black 5", "Black 6", "Black 7", "Black 8", "Black 9", "Black 10"]
#Acts as a deck
def card_draw():
   player_1_card = cards[random.randint(0,29)]
   player_2_card = cards[random.randint(0,29)]
   while player_1_card == player_2_card:
       player_2_card = cards[random.randint(0,29)]
   return (player_1_card, player_2_card)
#Defines player 1 and 2's cards
player_1 = input("Please enter your name.")
player_2 = input("Please enter your name.")
#Names the players
card_draw()
print(player_1 + " is now drawing a card from the top of the deck.")
print(player_1 + " drew a " + player_1_card)
print(player_2 + " is now drawing a card from the top of the deck.")
print(player_2 + " drew a " + player_2_card)
#Tells the players what cards they drew 

运行此代码后,变量 player_1_card 和 player_2_card 即使在返回后也未定义,为什么会这样?

而不是只运行 function card_draw() 您需要通过以下方式定义参数:

player_1_card, player_2_card = card_draw()

那是因为您编写的 function 返回了那些选择的变量。

此外,您应该阅读一些有关局部变量和全局变量的信息。

print(player_1 + " drew a " + player_1_card)
print(player_2 + " drew a " + player_2_card)

这些行有错误。 变量 player_1_card 和 player_2_card 在 card_draw function 中声明,您可以在 function 之外访问它们。

这些变量被定义为 function 中的局部变量。 所以它们在 function 之外是不可见的。 您可以通过将它们设为全局来解决该问题:

player_1_card = None
player_2_card = None

def card_draw():
   global player_1_card, player_2_card
   player_1_card = cards[random.randint(0,29)]
   player_2_card = cards[random.randint(0,29)]
   while player_1_card == player_2_card:
       player_2_card = cards[random.randint(0,29)]
   

现在变量是可见的,可以在全局 scope 中使用,而无需从 function 中返回它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM