Неверное значение функции Python 3.x - PullRequest
0 голосов
/ 12 мая 2018

Я не могу понять, почему мой код дает мне неправильное значение .. Как начинающий на Python, я изучаю def () .

Итак, мой код:

def secret_formula(started):

  jelly_beans = started * 500
  jars = jelly_beans / 1000
  crates = jars / 100
  return jelly_beans, jars, crates


start_point = 10000
beans, jars, crates = secret_formula(start_point)

print(f"With a starting point of: {start_point}")
print(f"We'd have {beans} beans, {jars} jars, and {crates} crates.")

start_point = start_point / 10

print("We can have also do that this way:")
print("We'd have {} beans, {} jars, and {} crates.".format(beans, jars, crates))

Когда я запускаю свою программу, мой ответ:

С начальной точкой: 10000

У нас будет 5000000 бобов, 5000,0 банок и50,0 ящиков.

Мы также можем сделать это следующим образом:

У нас будет 5000000 бобов, 5000,0 банок и 50,0 ящиков.

Но я считаю, что это должно быть:

С начальной точкой: 10000

У нас будет 5000000 бобов, 5000,0 банок и 50,0 ящиков.

Мы также можем сделать это следующим образом:

У нас будет 500000 бобов, 500 банок и 5 ящиков.

Что-то в этом роде ... Из-за start_point = start_point / 10 верно?

Что я делаю не так?

Obs: Да, я использовал разные методы для "печати" по причинам тестирования.

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

Изменение значения начальная_точка не означает, что значения бобов, ящиков и банок пересчитываются.Вы должны переназначить их снова, чтобы получить правильные значения.

Попробуйте повторить строку, где вы вызываете секретную формулу, после изменения значения начальная_точка.

0 голосов
/ 12 мая 2018

Значение бобов, банок, ящиков уже было назначено при первом запуске secret_formula (). Изменение start_point приведет к обновлению значения переменной «start_point», а не других.

Повторно запустив secret_formula (), вы получите новые значения, которые вы ищете.

def secret_formula(started):
    jelly_beans = started * 500
    jars = jelly_beans / 1000
    crates = jars / 100
    return jelly_beans, jars, crates


start_point = 10000
beans, jars, crates = secret_formula(start_point)

print(f"With a starting point of: {start_point}")
print(f"We'd have {beans} beans, {jars} jars, and {crates} crates.")

start_point = start_point / 10
beans, jars, crates = secret_formula(start_point)

print("We can have also do that this way:")
print("We'd have {} beans, {} jars, and {} crates.".format(beans, jars, crates))
0 голосов
/ 12 мая 2018

Вам нужно вспомнить secret_formula() как:

start_point = start_point / 10
beans, jars, crates = secret_formula(start_point)

Код теста:

def secret_formula(started):
    jelly_beans = started * 500
    jars = jelly_beans / 1000
    crates = jars / 100
    return jelly_beans, jars, crates

start_point = 10000
beans, jars, crates = secret_formula(start_point)

print(f"With a starting point of: {start_point}")
print(f"We'd have {beans} beans, {jars} jars, and {crates} crates.")

start_point = start_point / 10
beans, jars, crates = secret_formula(start_point)

print("We can have also do that this way:")
print("We'd have {} beans, {} jars, and {} crates.".format(beans, jars,
                                                           crates))

Результаты:

With a starting point of: 10000
We'd have 5000000 beans, 5000.0 jars, and 50.0 crates.
We can have also do that this way:
We'd have 500000.0 beans, 500.0 jars, and 5.0 crates.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...