zoukankan      html  css  js  c++  java
  • python学习笔记之--变量和常量

    常量

    • 是内存中用于保存固定值的单元,在程序中常量的值不能发生改变;python并没有命名常量,也就是说不能像C语言那样给常量起一个名字。
    • python常量包括:数字、字符串、布尔值、空值

    >>> 'python'
    'python'
    >>> 3
    3
    >>> True
    True
    >>> []
    []

    变量

    • Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
    • 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
    • 等号(=)用来给变量赋值。
    • 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值
    #变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误:
    >>> n   # 尝试访问一个未定义的变量
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'n' is not defined
    
    #变量赋值
    >>> counter = 100          # 整型变量
    >>> miles   = 1000.0       # 浮点型变量
    >>> name    = "runoob"     # 字符串
    >>> print (counter)
    100
    >>> print (miles)
    1000.0
    >>> print (name)
    runoob
    
    #交换变量值
    >>> a=1
    >>> b=2
    >>> id(a)
    1755082208
    >>> id(b)
    1755082240
    >>> a,b=b,a
    >>> print(a,b)
    2 1
    >>> id(a)
    1755082240
    >>> id(b)
    1755082208
    思考:为什么一步操作就可以交换两个值?
    python的变量并不是直接存储值,而只是引用一个内存地址,交换变量时,只是交换了引用的地址,
    即a,b=b,a的执行过程是---->先是变量a被赋“b值”的内存地址,然后变量b被赋“a值”的内存地址
    
    
    
    #多个变量赋值
    >>> a = b = c = 1
    >>> print(a,b,c)
    1 1 1
    >>> a, b, c = 1, 2, "python"
    >>> print(a,b,c)
    1 2 python
     

    id(身份标识)

    >>> a=1
    >>> id(a)    #id表示一个值在内存中的位置,可以判断两个值是否是同一个对象
    498232336
    >>> id(a)   #id值相同表示两个值在内存中同一个地方,是同一个东西
    498232336
    >>> b=300
    >>> id(b)
    59417712
    >>> id(30)
    498233264

     注:python中1-256之间的数字在内存中存在在同一个位置

    示例:

    >>> a=1001
    >>> a is 1001
    False
    >>> b=1
    >>> b is 1
    True

    #引用赋值(内存地址相同)

    >>> a=1000
    >>> id(a)
    57192176
    >>> b=a  #=引用赋值
    >>> id(b)
    57192176

    练习:写一个程序,找到id不一样的那个数,从1开始遍历后面的数,找到第一个不一样的数

    算法:

    1.生成300个数  for

    2.拿一个数与之对比,判断id值是否相等 申明一个常量,每次比较后+1

    3.找到后停止循环,并打印

    >>> num =0
    >>> for i in range(300):
    ...     if id(i) != id(num):
    ...         print(i)
    ...         break
    ...     num +=1
    ...
    257
  • 相关阅读:
    P3387 【模板】缩点 tarjan
    P2831 愤怒的小鸟 状压dp
    交流帖
    P3959 宝藏 模拟退火。。。
    B1060 [ZJOI2007]时态同步 dfs
    P1850 换教室 概率dp
    树链刨分(待修改)
    B3403 [Usaco2009 Open]Cow Line 直线上的牛 deque
    B3402 [Usaco2009 Open]Hide and Seek 捉迷藏 最短路
    B5248 [2018多省省队联测]一双木棋 状压dp
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11549658.html
Copyright © 2011-2022 走看看