Loading...
Iva861 avatar Iva861 1 Точки

Walking

Здравейте, 

може ли някой да ми каже къде бъркам с кода на задача 5 Walking  от лаба? При условие, че Габи реши да си отиде в къщи преди да е извървяла 10000 стъпки.

Това е кода 

steps = input()
counter_steps = 0
goal = 10000


while True:
    steps = input()

    if steps == "Going home":
        steps = int(input())
        counter_steps += steps
        if counter_steps >= goal:
            print("Goal reached! Good job!")
        else:
            diff = goal - counter_steps
            print(f"{diff} more steps to reach goal.")
        break

    counter_steps += int(steps)

    if counter_steps >= goal:
        print("Goal reached! Good job!")
        break

а принтира следното: 4000 more steps to reach goal. 

Тагове:
0
Python
mfilipov avatar mfilipov 24 Точки
steps = input()                      <<<--------
counter_steps = 0
goal = 10000


while True:
    steps = input()                  <<<--------

    if steps == "Going home":

........

......

Това е излишно и стъпките въведено, чрез него се презаписват и не се събиран никъде.

0
10/11/2018 20:26:23
Iva861 avatar Iva861 1 Точки

Здравей mfilipov, 

изтрих това което казваш, че е излишно. Но тогава принтира съвсем грешно нещо. Steps= input () според мен трябва да го има за да проверява ако входа е стринг (в случая Going home) но при първия вход от 1500 тези стъпки не се добавят към counter_steps. indecision

0
The_assassin avatar The_assassin 158 Точки

Здравей Ива,
ти сигурно си изтрила и двата реда, за това прави така. Изтрий само първия, или още по-добре, промени го на „None“, и би трябвало да работи! Въпреки че, според мене, това не е единственото излишно нещо в този код.

0
Iva861 avatar Iva861 1 Точки

Благодаря с изтриването само на първия ред стана ;)

1
Bars1967 avatar Bars1967 9 Точки

Може ли да се съкрати още?

steps = 0


while True:
    step = input()
    if step == "Going home":
        step = int(input())
        steps += step
        if steps >= 10000:
            print('Goal reached! Good job!')
        else:
            print(f'{10000 - steps} more steps to reach goal.')
        break
    else:
        steps += int(step)

    if steps >= 10000:
        print('Goal reached! Good job!')
        break
0
12/11/2018 17:11:50
The_assassin avatar The_assassin 158 Точки

Е чак „кой знае колко“ няма как да се съкрати, но не ми харесва, когато има повтарящ се код, при положение, че може да бъде избегнато.
Ето как аз съм я направил, без да имам претенции, че това е оптималното решение:

stps = 0
stps_lft = None

while stps < 10000:
    inpt = input()
    if not inpt.lower() == 'going home':
        stps += int(inpt)
    else:
        stps += int(input())
        stps_lft = 10000 - stps
        break

if stps < 10000:
    print('%d more steps to reach goal.' % stps_lft)
else:
    print('Goal reached! Good job!')

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.