Форум сайта python.su
Добрый день.
Прохожу сейчас на edx.org курс по Питону. Попалась задача. Я ее решил, но во время решение возник вопрос, который не могу понять.
Интересует выражение “ans = (high+low)/2” и его позиционирование в коде.
inpt='' low = 0 high = 100 # "Позиция 1" - программа постоянно спрашивает "Is your secret number 50?" # ans = (high+low)/2 print 'Please think of a number between 0 and 100!' while inpt != 'c': # "Позиция 2" - все работает норм ans = (high+low)/2 print 'Is your secret number ' + str(ans) +'?' inpt = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly.") if inpt == 'h': high = ans elif inpt == 'l': low = ans elif inpt == 'c': inpt == 'c' else: print 'Sorry, I did not understand your input.' if inpt == 'c': print 'Game over. Your secret number was: ' + str(ans)
Отредактировано TitanFighter (Июнь 27, 2015 16:22:28)
Офлайн
elif inpt == 'c': inpt == 'c'
TitanFighterНа помощь приходит Капитан Очевидность:
позиции 1 и 2.
Почему в “Позиции 1” пересчет ans не происходит, а в “Позиции 2” происходит?
Офлайн
FishHookЯ старался) Но я честно могу лучше
elif inpt == ‘c’:
inpt == ‘c’
ГЕНИАЛЬНО!!!!
if inpt == 'h': high = ans elif inpt == 'l': low = ans elif inpt == 'c': print 'Game over. Your secret number was: ' + str(ans) else: print 'Sorry, I did not understand your input.'
FishHook
На помощь приходит Капитан Очевидность:
Потому что позиция 1 вне цикла, а позиция 2 внутри цикла!
В позиции 1 расчет происходит один раз до цикла, в позиции 2 каждый раз пока выполняется цикл.
Отредактировано TitanFighter (Июнь 27, 2015 20:42:06)
Офлайн