首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >一次定义多个变量和分别定义多个变量的区别

一次定义多个变量和分别定义多个变量的区别
EN

Stack Overflow用户
提问于 2019-03-23 06:52:41
回答 4查看 74关注 0票数 2

我是Python的新手,我正在尝试通过自学来学习Python。我试图使用while循环来构建斐波纳契级数。下面是我的代码,它没有返回所需的结果。有人能解释这个问题吗?

代码语言:javascript
运行
AI代码解释
复制
a = 0
b = 1

while b<100:
    print(b)
    a = b
    b = a + b

如果我们像a, b = b, a+b一样同时定义a, b,这将完美地工作。为什么会发生这种情况?我不明白,因为在这两种情况下,a和b的定义都是一样的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-23 07:16:43

这是因为Python等编程语言会按照您编写的顺序执行您编写的语句。

这意味着在执行b = a + b时,a的值已经在前一行中发生了更改。

解决这个问题的一个简单方法是使用第三个变量临时存储结果。

代码语言:javascript
运行
AI代码解释
复制
a = 0
b = 1
c = 1

while c < 100:
    print(c)
    c = a + b
    a = b
    b = c
票数 0
EN

Stack Overflow用户

发布于 2019-03-23 07:09:22

您的代码无法正常工作,因为您在计算b之前更改了a的值。在斐波那契数列中,您需要a和b的前一个值。您可以如上所述使用list,也可以引入另一个变量来存储值。

代码语言:javascript
运行
AI代码解释
复制
while True:
    temp = a + b
    if temp >100:
        break
    print(temp)
    a = b
    b = temp

作为参考,这里有一个使用list的简单实现

代码语言:javascript
运行
AI代码解释
复制
lst = [0, 1]
while True:
    temp = lst[-1]+lst[-2]
    if temp>100:
        break
    lst.append(temp)

print(lst)
票数 0
EN

Stack Overflow用户

发布于 2019-03-23 07:20:46

你犯了一个小错误。

当您执行a = b时,您将更改a的值。在这之后,当你做b=a+b时,它实际上等同于b = b+b => b=2b

要避免这种情况,请使用临时变量temp并将a的值存储在其中。然后使用a = b更改a的值。那就这样吧,a = a+b

代码如下:

代码语言:javascript
运行
AI代码解释
复制
a=0
b=1

while b<100:
    print(b)

    temp = a
    a = b
    b = temp+b

执行a, b = b, a+b时,a的前一个值用于计算新的b,我们通过将a的前一个值存储在temp中进行了类似的操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55311361

复制
相关文章
用和不用export定义变量的区别
标记每个 NAME,以便自动导出到随后执行的命令的环境中。如果提供了 VALUE,则在导出前分配 VALUE。
程序熵
2023/09/25
2850
用和不用export定义变量的区别
JSP定义_JSP声明变量与普通脚本变量的区别
在JSP中用两种声明变量的方法,一种是在<%! %>内,一种是在<% %>内。他们之间有什么区别呢?我们直接看一个JSP文件来理解。
全栈程序员站长
2022/11/03
2.2K0
Shell变量:Shell变量的定义、赋值和删除
变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。
会长君
2023/04/25
4.7K0
MySQL中变量的定义和变量的赋值使用
说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin…end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解。
全栈程序员站长
2022/06/30
9.4K0
python输出多个变量的值。
有点类似于C语言 print("%s,%d,%d"%(name ,age ,school))
py3study
2020/01/10
5.1K0
Python和Scala的定义变量
每一门的编程语言背后都代表着某一种特别的哲学,由这一哲学进而设计出属于这门程序语言的语法,Python和Scala也不例外。我们从变量的定义去一窥Python和Scala设计哲学的不同。
哒呵呵
2018/08/06
5510
oracle declare多个变量_赋值
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171208.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/24
1.6K0
sql定义变量的语法是什么_sql 定义变量
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171370.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/23
2.6K0
变量定义的分类和变量类型判断的方法
几乎在所有编程语言当中变量是最先接触语法概念,那么什么是变量,变量应该怎么定义呢,定义变量又该注意哪些因素呢?这里我们来给大家详细聊聊。
python自学网
2021/11/28
2.2K0
变量定义的分类和变量类型判断的方法
css定义变量
仁义忠信,乐善不倦,此天爵也 。一一《孟子》 写法如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> :root { /* 定义变量,需要--开头 */ --ruben-width: 200px; --ruben-height: 200px; --ruben-bg-color: #ff0000; }
阿超
2022/08/17
2.1K0
css定义变量
(十一)定义多个 store
我们在开发大型项目的时候会有很多的状态,比如说关于用户的,关于产品的,等等之类的,如果我们把他放在一个 store 里面就会变得非常难以维护
老怪兽
2023/02/22
5950
python变量的定义
        python中字符带单引号或者双引号,python都认为是字符串。
py3study
2020/01/12
1.6K0
matinal:Python变量的定义和使用
任何编程语言都需要处理数据,比如数字、字符串、字符等,我们可以直接使用数据,也可以将数据保存到变量中,方便以后使用。 变量(Variable)可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。 从底层看,程序中的数据最终都要放到内存(内存条)中,变量其实就是这块内存的名字。 和变量相对应的是常量(Constant),它们都是用来“盛装”数据的小箱子,不同的是:变量保存的数据可以被多次修改,而常量一旦保存某个数据之后就不能修改了。
matinal
2023/10/14
2110
java全局变量和局部变量的区别_全局变量和局部变量的定义
全局变量是一个运行时刻实体,它在程序的整个执行过程中都存在。全局变量生命周期为程序开始到程序结束。 全局变量显示初始化时,或者未初始化时,在程序映像中有不同的分区:已初始化的全局变量是可执行模块的一部分。未初始化的全局变量则不是可执行模块的一部分,只有当定义它们的程序被调用时(即执行时),才分配空间,声明或定义时并不分配。未初始化的全局变量在运行时被初始化为0或null。 局部变量也叫自动变量,它声明在函数块内,作用范围也在函数快内,不能同一源文件的其它函数使用,也不能其他文件中的函数使用,局部变量存储在栈中。无论局部变量显示初始化,或者未初始化,都只有当定义它们的程序快被调用时(及执行时),才分配空间,声明或定义时并不分配,局部变量不是可执行每模块的一部分!!除非显示地局部变量进行初始化,否则,它们的初始值是不确定的。局部变量在使用之前必须初始化。 全局变量没有声明在任何一个函数内,作用范围在程序运行始终存在,能被同一原文件的任何函数使用, 也能被其他文件中的函数使用,但是使用extern关键字。方法执行完后,随之销毁结束。 全局变量存储在数据段中。 具体来说,全局变量和局部变量的区别如下:
全栈程序员站长
2022/09/24
1.5K0
js中const,var,let定义变量的区别
js中const,var,let定义变量的区别 1.const定义变量不可以修改,而且必须初始化 const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);//有输出值 // b = 5; // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错 var a = 1;
别盯着我的名字看
2022/06/09
3.3K0
Python中如何定义变量?定义变量的规则是什么?
上一篇文章讲述了变量的概念和作用,下面讲解的是变量的第二个知识点 - 定义变量和定义变量名的规则,下一篇在讲解变量的使用。
python自学网
2022/02/24
3.4K0
[GO专栏-3]Go语言的变量定义
以上三个表达式均是合法的,第三个表达式会将i初始化为int类型的零值,0;如果i是bool类型,则为false;i是float64类型,则为0.0;i为string类型,则为"";i为interface类型,则为nil;i为引用类型,则为nil;如果i是struct,则是将struct中所有的字段初始化为对应类型的零值。
苏州程序大白
2022/04/13
7160
结构体变量的定义
结构体变量的基本定义方式与普通变量是相似的,但是由于结构体类型是在程序中自义的,因此结构体变量的定义就更加灵活,可以采用以下3种形式。
pigeon
2022/04/11
1.4K0
beanshell入门:脚本中引用自定义的变量和方法和定义运行时变量
Beanshell (bsh) 是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。
10km
2022/09/26
2K0
点击加载更多

相似问题

变量的多个定义

10

C宏一次定义多个变量

14

Android,如何一次定义多个变量

23

excel定义多个变量

10

高效定义多个变量

60
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文