2017-04-06 78 views
-2

我编码一个基本的BlackJack游戏,我挑战自己,使尽可能多的功能成为可能,从而使代码如下所示:Python; NameError:名字“handsum”没有定义

funcA() 
funcB() 
funcC() 

至于反对:

funcA() 
print("this") 
print("that") 
funcB() 

这里是我的问题是在我的代码:

def playerTurn(): 
    global handSum 
    global cardOne 
    global cardTwo 
    global dealerSum 
    global upCard 
    global downCard 
    global bet 
    global newCard 
    global dealerNewCard 
    str(handsum) 
    str(cardOne) 
    str(cardTwo) 
    str(upCard) 
    str(money) 
    print("You are lying at", handSum, "with a", cardOne, 'and a', cardTwo 

    + '.', "The Dealer has a", upCard, "facing up. You have $" + money + '.') 
    int(handsum) 
    int(cardOne) 
    str(cardTwo) 
    str(upCard) 
    str(money) 
    sleep(1.3) 
    bet=int(input('How much would you like to bet? ')) 
    sleep(1.3) 
    money-=bet 
    print("Your bet is $%s." %bet) 
    sleep(2.5) 
    playerInput=input(str(print('''Would you like to: 
    Hit (H) 
    Stand (S) 
    Double (D) 
    Stick (SP) 
    Enter Letter for Answer: '''))).upper 
    sleep(1) 
    while True: 
     Hit() 
     Stick() 
     Double() 
     Quit() 

而这里的错误,我得到一次我的代码达到这样的功能:

Traceback (most recent call last): 
    File "C:\Users\Owner\Desktop\Python\Games\Python 3.X\BlackJack\BlackJack.py", 

line 20, in <module> 
    Start() 

    File "C:\Users\Owner\Desktop\Python\Games\Python 3.X\BlackJack\BlackJack.py", 

line 16, in Start 
    Intro() 

    File "C:\Users\Owner\Desktop\Python\Games\Python 

    3.X\BlackJack\PlayerTurns.py", line 242, in Intro 
    playerTurn() 

    File "C:\Users\Owner\Desktop\Python\Games\Python 

    3.X\BlackJack\PlayerTurns.py", line 188, in playerTurn 
    str(handsum) 

NameError: name 'handsum' is not defined 

我对这个游戏使用了多个python文件(2)。

+0

它看起来不像,但一切正常缩进。 –

+8

'handsum'和'handSum'是一个不同的变量。 –

+4

方式**太多'全球'**。 –

回答

1

在蟒蛇,就像

str(handsum) 

线意味着你调用的函数str的说法handsum,然后disgarding结果。在这个函数中,你没有在范围内有一个名为handsum的变量。由于您的global handSum行(注意总计S总和)您有一个相似的名称,但范围内的不同变量。你可能打算引用这个变量,但python区分大小写。

但是,我不知道你为什么要在变量上调用str并丢弃返回值。这不会声明handSum(您不需要声明python变量,它们是在赋值时创建的,并且可以使用global关键字将它们带入范围),也不会将handSum(如果更改了大小写)转换为字符串(你将需要使用返回值str(handSum)),或者确实,根本就没有做任何事情。

此外,您不希望使用global s用于所有这些变量。将它们作为参数传递给函数,或者将它们包装到一个对象中。这有助于在未来划分问题。

相关问题