从其他函数使用时未定义的变量

2024-09-27 18:04:17 发布

您现在位置:Python中文网/ 问答频道 /正文

In the photo, you can see that line 24 shows up as an error - "pile1" is not defined,"pile2" is not defined, "pile3" is not defined

import random

def create_cards():
  deck = []
  for i in range(21):
    suits = ["♥","♦","♠","♣"]
    numbers = ['1','2','3','4','5','6','7','8','9','10','K','Q','J']
    card = (random.choice(numbers) + random.choice(suits))
    deck.append(card)
  return deck


def create_piles():
  pile1 = []
  pile2 = []
  pile3 = []
  for k in range(7):
    pile1.append(deck.pop())
    pile2.append(deck.pop())
    pile3.append(deck.pop())
  return piles

def user_input():

  print (pile1, pile2, pile3)
  choice = input("Which pile is your card in?")
  if choice == 1:
    deck = 
  elif choice == 2:
    deck = 
  else:
    deck = 

def trick():
  print(0)

deck = create_cards()
piles = create_piles()

如何解决这个问题(我试过将函数create\u piles放在user\u输入括号中,但仍然显示为未定义)


Tags: inisdefcreatenotrandomcarddeck
2条回答

看起来最简单的解决方法是简单地更改函数,将桩作为参数。像这样:

def user_input(piles):
    print(piles)
    choice = input("which pile is your card in?")

代码无法工作的原因是函数试图访问不在其作用域中的变量。请花点时间阅读更多关于范围的内容:Short Description of the Scoping Rules?

另外,应该用4个空格而不是2个空格缩进

import random

def create_cards():
    deck = []
    for i in range(21):
        suits = ["♥","♦","♠","♣"]
        numbers = ['1','2','3','4','5','6','7','8','9','10','K','Q','J']
        card = (random.choice(numbers) + random.choice(suits))
        deck.append(card)
    return deck

def create_piles(deck):
    pile1 = []
    pile2 = []
    pile3 = []
    for k in range(7):
        pile1.append(deck.pop())
        pile2.append(deck.pop())
        pile3.append(deck.pop())
    return [pile1, pile2, pile3]

def user_input(pile1, pile2, pile3):
    print (pile1, pile2, pile3)

deck = create_cards()
piles = create_piles(deck)
user_input(*piles)

相关问题 更多 >

    热门问题