2015-08-02 2 views
0

Я учусь кодировать, и мне очень сложно понять, как работает код ниже. Часть кода - это функция, которая обеспечивает решение проблемы, которой дается несколько голов и ног, сколько у вас свиней и цыплят. Комментарии показывают, где я попадаю на блокпост, может ли кто-нибудь помочь пролить свет на эти препятствия для меня? Код работает, я просто не знаю, как/почему. Спасибо!Python Порядок операций

def solve(numLegs, numHeads): 
    for numChicks in range(0, numHeads + 1): 
     numPigs = numHeads - numChicks #So this says numPigs is equal to (5,4,3,2,1,0) 
     totLegs = 4*numPigs + 2*numChicks #I don't understand how the math is caluclated here. 
     #I'd assume this is equal to 4*(5,4,3,2,1,0) + 2*(0,1,2,3,4,5). But how does that calculate? 


     if totLegs == numLegs: #finally here, if totLegs is equal to a list, and so are numPigs, and numChicks 
           #how do you get one value for each?? 

      print (numPigs, numChicks) 
    return (None, None) 


solve(14,5) 

ответ

0

Предполагая, что у вас есть p свиней и c цыпленка, есть целые p + c головы, так как каждое животное имеет одну голову и 4 * p + 2 * c ноги, так как каждая свинья имеет 4 ноги, и каждый цыпленок имеет 2 ноги.

Это приводит к двум ограничениям

  1. головки = р + с
  2. ноги = 4 * р + 2 * с

В коде:

for numChicks in range(0, numHeads + 1): 

Loops через возможные значения для числа цыплят (с). Таким образом numChicks последовательно принимает значения 1, 2, 3 и т. Д.

numPigs = numHeads - numChicks 

Рассчитывается на основе первого ограничения.

totLegs = 4*numPigs + 2*numChicks 

Проверяет, является ли второе ограничение держит

if totLegs == numLegs: 

Проверяет найденное значение является ожидаемым

+0

Спасибо. Теперь имеет смысл! – MJ49

1

Так что это говорит numPigs равно (5,4,3,2,1,0)

Нет, это не говорит о том, что. Тело цикла for выполнено numHeads+1 раз. При первом выполнении numPigs равно 5. При втором выполнении оно равно 4 и так далее.

если totLegs равно списку

Это не так, это число.

+0

Да, «петли», которые называются, потому что они работают несколько раз. – melpomene

+0

Спасибо. Я получаю это сейчас! Я полностью игнорировал часть цикла! – MJ49

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