Найти - Пользователи
Полная версия: помогите понять
Начало » Python для новичков » помогите понять
1
Malinaizer
есть скрипт который выводит числа фибоначчи, почему в последней строчки при присвоение a,b=b,a+b где a+b все равно a равно 0 , вот здесь же a,b=b передается значение 1?
a,b=0,1
while b<10:
print b,
a,b=b,a+b


1
1
2
3
8
Dimka665
потому что 0+1=1
Malinaizer
Dimka665
потому что 0+1=1
a,b=b,a+b тогда почему b=1 а не 2 если a=1+b=1
Malinaizer
Malinaizer
Dimka665
потому что 0+1=1
a,b=b,a+b тогда почему b=1 а не 2 если a=1+b=1
не понятно почему вот в этой части a+b “a” все еще равно 0
yashamhur
a,b=b,a+b - вот где собака порылась

PS:
a=b
b=a+b
Malinaizer
yashamhur
a,b=b,a+b - вот где собака порылась
так это понятно, просто если a,b=b то a,b=1 а вот a+b это 0+1 почему так если “a” уже ссылается на “b”

почему a=b b=a+b, не равно, a,b=b,a+b
Rodegast
>почему a=b b=a+b, не равно, a,b=b,a+b

По тому что в первом случае а меняет своё значение, а во втором оно остаётся первоначальным.
Malinaizer
Rodegast
>почему a=b b=a+b, не равно, a,b=b,a+b

По тому что в первом случае а меняет своё значение, а во втором оно остаётся первоначальным.
спасибо!
yashamhur
я и говорю - способ записи

Rodegast
По тому что в первом случае а меняет своё значение, а во втором оно остаётся первоначальным.
- на самом деле “а” похоже меняет свое значение и во втором, но при такой записи “a,b=b,a+b” это происходит после присваивания b=a+b
и имеет тот же эффект, что и “b,a=a+b,b ”
т.е надо разделять строки, т.е. “явное лучше неявного” ..и т.д. и т.п. ….
вывод : не мучайте питона! :)
Dimka665
просто “b, a+b” - это укороченная запись кортежа (b, a+b)
a, b = b, a+b - тоже самое, что и
ab = (b, a+b)
a = ab
b = ab
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB