首页 > 解决方案 > 从另一个函数使用时未定义的变量

问题描述

在照片中,您可以看到第 24 行显示为错误 - “pile1”未定义,“pile2”未定义,“pile3”未定义

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_piles 放在 user_input 括号内,仍然显示为未定义。)

标签: python

解决方案


您的代码不起作用的原因是您的函数试图访问不在其范围内的变量。请花时间在此处阅读有关范围的更多信息:范围规则的简短描述?

此外,您应该缩进 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)

推荐阅读