0
0 комментариев

Добрый день.
Прохожу сейчас на 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.

Спасибо.


Добавить комментарий