2016-08-02 2 views
0

Я попытался написать код, используя советование из Zed Shaw ниже:Learn Python The Hard Way, EX21 Q3

Что вы подразумеваете под «выписать формулу»? Попробуйте 24 + 34/100 - 1023 в начале. Преобразуйте это, чтобы использовать функции.

Вот мой код:

def add(a, b): 
    print "Adding %s + %s" % (a, b) 
    return a + b 

def divide(a, b): 
    print "Dividing %r/%r" % (a, b) 
    return a/b 

def subtract(a, b): 
    print "Subtracting %s - %s" % (a, b) 
    return a - b 

cats = (24) 
dogs = subtract(100, 1023) 
monsters = divide(34.0, 100) 

print "cats: %r, dogs: %r, monsters: %r" % (cats, dogs, monsters) 

Result = subtract(dogs, add(cats, divide(monsters,1))) 

print "That becomes:", Result, "Can you do it by hand?" 

Проблема заключается в том, что, когда я вычислить 24 + 34/100 - 1023 вручную я получаю всего -998.6. Но мой код выше дает мне - 947.34. Мне интересно, где моя ошибка. Как должен выглядеть правильный код для этого 24 + 34/100 - 1023?

Или у меня есть тот же код немного изменен, и все еще иметь другой результат: -981,34:

def add(a, b): 
    print "Adding %s + %s" % (a, b) 
    return a + b 

def divide(a, b): 
    print "Dividing %r/%r" % (a, b) 
    return a/b 

def subtract(a, b): 
    print "Subtracting %s - %s" % (a, b) 
    return a - b 

cats = add(24, 34) 
dogs = subtract(100, 1023) 
monsters = divide(34.0, 100) 

print "cats: %r, dogs: %r, monsters: %r" % (cats, dogs, monsters) 

Result = subtract(dogs, add(cats, divide(monsters,100))) 

print "That becomes:", Result, "Can you do it by hand?" 

Спасибо за вашу помощь и куски посоветуйте.

ответ

0

С помощью коллеги я нашел решение вышеуказанной проблемы. Например, мне приходилось создавать такие значения, как x, y, z и w. Вот код, который делает эту работу:

def add(a, b): 
    print "Adding %s + %s" % (a, b) 
    return a + b 

def divide(a, b): 
    print "Dividing %r/%r" % (a, b) 
    return a/b 

def subtract(a, b): 
    print "Subtracting %s - %s" % (a, b) 
    return a - b 

x = 34.0 
y = 100 
z = 24 
w = 1023 
monsters = divide(x, y) 
cats = add(z, monsters) 
dogs = subtract(cats, w) 

print "cats: %r, dogs: %r, monsters: %r" % (cats, dogs, monsters) 

#Result = add(cats, divide(monsters, subtract(dogs, 1023))) 
#Result = add(cats, subtract(dogs, divide(monsters, 100))) 
Result = dogs 
#Result = divide(monsters, add(cats, subtract(dogs, 1023))) 

print "That becomes:", Result, "Can you do it by hand?" 

#24 + 34/100 - 1023 

#float(raw_input()) 

Но этот код не соответствует логике EX21. Если у кого-то есть лучшее решение, пожалуйста, поделитесь им здесь.

0

И вот еще одно решение, хотя первоначально оно должно быть -998.66. Вместо этого код ниже 998.66. Поэтому определенно есть что-то скрывающее от меня :)

def add(a, b): 
    print "Adding %s + %s" % (a, b) 
    return a + b 

def divide(a, b): 
    print "Dividing %r/%r" % (a, b) 
    return a/b 

def subtract(a, b): 
    print "Subtracting %s - %s" % (a, b) 
    return a - b 

monsters = (34.0) 
cats = (24) 
dogs = (1023) 

print "cats: %r, dogs: %r, monsters: %r" % (cats, dogs, monsters) 

#Result = add(cats, divide(monsters, subtract(dogs, 1023))) 
#Result = add(cats, subtract(dogs, divide(monsters, 100))) 
#Result = dogs 
#Result = divide(monsters, 100), add(cats, subtract(dogs)))) 
Result = subtract(dogs, add(cats, divide(monsters, 100))) 
#Result = add(cats, divide(monsters, 100), subtract(dogs))) 
#Result = subtract(dogs, divide(monsters, 100), add(cats))) 

print "That becomes:", Result, "Can you do it by hand?" 

#24 + 34/100 - 1023 

#float(raw_input())