2010-09-17 49 views
0

假设你已经写了一个新的函数来检查你的游戏角色是否有生命。如果角色没有剩余生命,则该功能应打印“死亡”,如果该功能的剩余寿命点少于或等于5个,则该功能应打印“几乎死亡”,否则应打印“活着”。这段代码中的错误是什么?

am_i_alive(): 
    hit_points = 20 
    if hit_points = 0: 
     print 'dead' 
    else hit_points <= 5: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive() 
+0

你的单元测试用例在哪里?如果你会写一些测试用例,你会知道错误是什么,不是吗? – 2010-09-17 10:02:31

+0

@ S.Lott在代码显示的情况下,我会说它是它自己的单元测试;) – aaronasterling 2010-09-17 18:22:35

回答

8
def am_i_alive(): 
    hit_points = 20 
    if hit_points == 0: 
     print 'dead' 
    elif hit_points <= 5: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive() 
  1. 您需要def关键字来定义一个函数。
  2. 您需要使用==而不是=进行比较。
  3. 如果使用elif表示陈述,则链接。

除此之外,它看起来不错。在正确和将编译。它将始终产生相同的价值。

一个更好的办法来做到这一点是:

def am_i_alive(hit_points): 
    if hit_points == 0: 
     print 'dead' 
    elif hit_points <= 5: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive(20) 
am_i_alive(3) 
am_i_alive(0) 

在这里,我们传递一个“说法”的功能。我们称之为am_i_alive(x),其中x可以是任何数字。在函数am_i_alive的代码中,无论我们用什么来代替x都成为hit_points所指的值。

函数也可以带两个参数。 (实际上最多255个参数)

def am_i_alive(hit_points, threshold): 
    if hit_points == 0: 
     print 'dead' 
    elif hit_points <= threshold: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive(20, 5) 
am_i_alive(3, 2) 
am_i_alive(0, 10) 

您能理解上一个版本的作用吗?

我没有读它,因为蟒蛇不是我的第一语言,但我被告知这是一个非常好的introduction to python and programming

+0

哦!现在有道理!谢谢! – 2010-09-17 05:56:36

+0

您还需要'elif'而不是'else if'。 – 2010-09-17 06:02:57

+0

@Fred拉尔森。好看。我正在休息一些C编码;) – aaronasterling 2010-09-17 06:04:58