变量:

1.什么是变量?

  变量是用来临时存储数据的,它是保存在内存中的。通俗的来讲:变量就是用来存值的。

  

1 name="alex li"
2 name2=name
3 name="JACK"
4 print(name,name2)
5 JACK alex li

  上面name是变量名,alex li 是变量值。大家看上面的代码,估计是一脸懵逼,没错,我也是,经常弄混。所以我们来画图分析一下:

  

  我们来讲解一下,上面所显示的图片是什么意思。首先,alex li ,JACK都是内存中开辟的2块内存空间,开始,name和name2的2个标签都是指向的是alex li,但是name又被重新赋值,所以其实是在内存中重新开辟了1块内存空间,再将name重新指向JACK,而原来的那块指向就不见了。(其实我觉得这个跟字符串不可变有关,你以为是覆盖了原来的,其实根本不是,就是重新开辟内存空间,再贴上标签)

  这里又涉及到Python里面的内存回收机制:

    当你在内存中不停的开辟空间的时候,我们是不需要像其他的语言考虑回收的问题的,因为Python本身就存在一个内存回收的机制。

    假设,我们把一栋大楼看成是一块内存,把我们为变量值开辟的空间,看成是大楼里面的一间间小房子,而变量名,就是房间里面的门牌号(其实相当于里面存的是变量内存的地址)。上面的alex li 相当于就是有2个门牌号指向这个房间,之后又将name指向JACK,就把指向alex li的门牌号给了JACK。那么内存回收机制就是一个楼管,看看,那个房间上面的没有门牌号,就将屋子里的东西清空。就相当于你都没有地址指向你,就没有人找你,当然就没有人用,楼管自然要将你清空了。

变量的命名规则:

  1.要是描述性的语言(命名要有意义)

  2.数字,字母,下划线组成,不能包含关键字,空格,特殊字符

  3.不能以数字开头

  4.不能以中文命名

  5.最好不要用大写的命名(第一:Python里面的变量有种,一种是变量,一种是不变的变量;一般我们将不变的量用大写来区分)

  6.长的命名用_来区分,或者可以用驼峰式命名

字符编码与二进制

为什么会要有字符编码?

  首先计算机底层只认识 0101 二进制,因为底层电压,脉冲信号就只有高低高低的信号,高的就用1,低的就用0,电流,有就是1,没有就是0。那么问题来了,如何用我们人能识别的字母,符号来让计算机识别呢,这样就需要一个转换的过程,就是接下来的字符编码。

  128  64  32  16  8  4  2  1

  1   1     1   1          1       1       1        1

  这上面的8位的和2**8=255,有255个的数字。发明了ASCII表,外国人呢就用了127个,后面的就留给我们第三世界的国家。

  中国呢,由于中文博大精深,外国人不懂,所以留下的表格不够用,我么就自己弄了一张扩展表,你是找中文,就找ASCII表对应的中国用的地方,再通过映射,指向我们自己的表。

  ASCII表,英文占1bytes=8bit

    ------>gb2312 7000+  

       ------>gbk1.0 20000+ 95年

          ------>gb18030 27000+ 2000年

  国际标准组织就觉得不行,各个国家都搞自己的一套标准很乱,于是Unicode就诞生了,万国码,中文,英文都占2个字节,但是歪果仁就不干了,我用ASCII挺好的,就只占一个字节,干嘛要用你的Unicode啊?,于是Unicode的扩展集,可变长的,可伸缩的utf-8就出来了。英文还是以ASCII的形式,中文就占3bytes。

1.asiic 8位表示一个字符 1字节(Bye) = 8字位 =8个二进制数,asiic码一般第一位都为0
  2,unicode(万国码)2个字节表示一个字符,改版后4个字节表示一个字符
  3,unicode升级版:UTF-8:最少用一个字节标识一个字符,UTF-16:最少用两个字节表示一个字符
    A:用一个字节标识一个字符
    欧洲文字:用两个字节表示一个字符
    亚洲文字:用三个字节表示一个字符

  4,gbk:国标,中国人自己使用,只包含英文与中文

    一个英文一个字节
    一个中文两个字节

用户交互程序 

用input与用户交互

username=input("username:")
password=input("password:")
print(username,password)  

注意:input接收的都是字符串类型

 if 条件:

  代码

elif 条件:

  代码

else:

  代码

age_of_oldboy=56
guess_age=int(input(">>>:"))
if age_of_oldboy==guess_age:
    print("yes")
elif age_of_oldboy<guess_age:
    print("think smaller")
else:
    print("think bigger")

这里面设计到,if.else的判断,python缩进

python缩进都是python特带的,可以减少了代码,代码的格式很舒服

格式化输出:

msg="你好%s,我%d岁"%("小陈",18)

name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")
msg='''
-------info of '''+name+'''----
name:'''+name+'''
age:'''+age+'''
job:'''+job+'''
salary:'''+salary
msg2='''
----------info of {_name}-------
name:{_name}
age={_age}
job:{_job}
salary:{_salary}
'''.format(_name=name,_age=age,_job=job,_salary=salary)
msg3='''
----------info of %s-------
name:%s
age=%s
job:%s
salary:%s
'''%(name,name,age,job,salary)
msg4='''
----------info of {0}-------
name:{0}
age:{1}
job:{2}
salary:{3}
'''.format(name,age,job,salary)

  以上是字符串的几种格式化的字符串的方式,但是建议大家不要用字符串的拼接,其他几种都是在空间开辟一块内存就可以实现,但是字符串的拼接是开辟几块内存,再进行拼接的。上面的看不懂没有关系,后面我将继续更博。。。

   

posted on 2018-04-03 17:01  Linux的爱好者  阅读(251)  评论(1编辑  收藏  举报