2010-09-17 3 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

Где находится ваш тестовый корпус? Если бы вы написали несколько тестовых примеров, вы бы знали, какие были ошибки, не так ли? –

+0

@ S.Lott В случае отображаемого кода я бы сказал, что это его собственный модульный тест;) – aaronasterling

ответ

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) 

Вы можете понять, что делает последняя версия?

Я не читал его, потому что python не мой первый язык, но мне сказали, что это очень хорошо introduction to python and programming.

+0

oh! Это имеет смысл сейчас! Спасибо! –

+0

Вам также нужно 'elif' вместо' else if'. –

+0

@Fred Ларсон. Хороший взгляд. Я беру перерыв от некоторых C-кодировок;) – aaronasterling

Смежные вопросы