Прохожу сейчас на 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)
Суть вопроса: Я не понимаю, в чем разница между размещением “ans = (high+low)/2” в позиции 1 и 2.
Почему в “Позиции 1” пересчет ans не происходит, а в “Позиции 2” происходит?
Как я себе понимаю, не должно быть разницы между позицией 1 и 2, так как после ввода ‘h’ или ‘l’ меняются переменные high и low и соответственно уже новый\пересчитанный ans должен использоваться в следующей итерации. Но почему то, если ans = (high+low)/2 запихнуть в 1ую позицию, то он упорно запоминает 100+0/2 и не хочет воспринимать измененные после первой итерации low и high.
Спасибо.
