我是初学者,编写Python Blackjack脚本,并对函数(dealPlayer)是否需要参数感到困惑。它可以使用参数或不使用参数。我不确定我是否有脑屁,或者我一路上都没有学过东西。这是代码:
import random
dealer = []
player = []
c = ""
deck = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,
9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11]
def dealPlayer(deck):
cardOne = random.choice(deck)
cardTwo = random.choice(deck)
player.append(cardOne)
player.append(cardTwo)
deck.remove(cardOne)
deck.remove(cardTwo)
问题是,我需要(套牌)作为函数中的参数吗?它可以使用或不使用(deck)作为参数。我已经回过头来看了不同的教程和其他代码,但我仍然感到困惑。谢谢你的帮助。
答案 0 :(得分:3)
您的代码使用或不使用deck
作为参数的原因是因为有一个名为deck
的全局变量,所以当您在函数中引用deck
时,该函数将首先查找局部变量(参数),然后如果找不到它,它将查找全局变量。
最好重构代码,根本不使用全局变量 - 最初在函数内定义deck
,然后根据需要将其作为结果或参数传递给其他函数。如果您不想这样做,那么至少要确保您的参数不会与全局变量进行阴影(具有相同的名称),以避免进一步混淆。或者完全删除参数并仅使用全局变量,如果这适合您的程序。
答案 1 :(得分:1)
如果你的职能是:
,我能帮到你def dealPlayer():
代码仍然有效?这应该引发一个未定义的卡座错误。编辑:这当然是错误的全球性。没有它就行不通。但那是一种不好的做法。
def dealPlayer():
deck = []
这应该引发索引错误。
cardOne = random.choice()
这会引发TypeError。