python day1

第1章 Day1

1.1 第一个python脚本

#!/usr/bin/env python

#_*_coding:utf-8_*_

print ("hello,world")

1.2 变量:变化的量

1.2.1 变量定义的规则:

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

1.2.2 变量的赋值

>>> name = "lieying"

>>> name2 = name

>>> print(name, name2)

lieying lieying

>>> name = "Jack"

>>> print("What is the value of name2 now?")

What is the value of name2 now?

>>> print("What is the value of %s now?" %name2) #格式化输出 是为了方便在字符串中插入变量的值

What is the value of lieying now?

>>> print("What is the value of",name2,"now?") 否则只能这样写 把字符串打断

What is the value of lieying now?

>>> print("What is the value of"name2"now?")  打印输出时,字符串与变量之间必须用逗号分隔,逗号默认打印空格

SyntaxError: invalid syntax

1.3 字符编码

Python 2.7 默认编码为 ASSCII

Asscii码使用八位二进制来表示一个字节 可以表示最多2**8=256个字符 中文有2万多汉字 所以表示不过来

1980年GB2312 一共收录了7445个字符,包括6763个汉字和682个其它符号。

1995年的汉字扩展规范GBK1.0收录了21886个符号

2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以要表示中文在python文件中要声明

#!/usr/bin/env python

# -*- coding: utf-8 -*-  

print ("你好,世界")

1.4 注释

  当行注视:# 被注释内容

  多行注释:""" 被注释内容 """

1.5 用户输入

1.5.1 当我们需要交互的获取一些变量的值时要用input

>>> name = input("What is your name?")     # 将用户输入的内容赋值给 name 变量

What is your name?lieying

>>> print("Hello " + name )

Hello lieying

1.5.2 输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import getpass

 

pwd = getpass.getpass("请输入密码:")

 

# 打印输入的内容

print(pwd)

1.6 模块初识

[root@linux-node1 scripts]# cat test.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys,os

print(sys.argv) #把执行脚本时传递的参数获取到了

os.system("df -h") #调用系统命令

os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行

[root@linux-node1 scripts]# python test.py pwd

['test.py', 'pwd']

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        28G  2.5G   26G   9% /

devtmpfs        983M     0  983M   0% /dev

tmpfs           993M     0  993M   0% /dev/shm

tmpfs           993M  8.7M  984M   1% /run

tmpfs           993M     0  993M   0% /sys/fs/cgroup

/dev/sda1      1014M  137M  878M  14% /boot

tmpfs           199M     0  199M   0% /run/user/0

/server/scripts

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

其实Python和Java/C#一样,也是一门基于虚拟机的语言

1.7 简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

第2章 python数据类型

1、数字

2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)

      先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

注:Python中存在小数字池:-5 ~ 257

2、布尔值

  真或假

  1 或 0

2.1 字符串

"hello world"

万恶的字符串拼接:

  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

字符串格式化输出

name = lieying

print "i am %s" %name

输出: i am lieying

   

PS: 字符串是 %s;整数 %d;浮点数%f

字符串常用功能:

移除空白

>>> print(' lieying '.strip())

lieying

分割

>>> print('lieying'.split('i'))

['l', 'ey', 'ng']

长度

>>> print(len('lieying'))

7

索引    

>>> print('lieying'.index('i'))  #默认从零开始到第一个i

1

>>> print('lieying'.index('i',2))  #指定到第二个i

4

切片

>>> print('lieying is a good boy'[1:15:2])

iyn sag

2.2 列表

list1=['lieying','jianhong','meiyue','liming',201,]

或者list1=(['lieying','jianhong','meiyue','liming',201,])

2.2.1 索引

>>> list1.index('jianhong')

1

>>> list1.index(201)

4

2.2.2 切片

>>> list1[0:4:2]

['lieying', 'meiyue']

>>> list1[0::2]

['lieying', 'meiyue', 201]

>>> list1[::2]

['lieying', 'meiyue', 201]

2.2.3 追加 var.append(‘xx’)

>>> list1.append('六中')

>>> print(list1)

['lieying', 'jianhong', 'meiyue', 'liming', 201, '六中']

2.2.4 删除

>>> list1.remove('六中')

>>> print(list1)

['lieying', 'jianhong', 'meiyue', 'liming', 201]

2.2.5 长度

>>> len(list1)

5

2.2.6 循环

>>> for n in list1:

    print(n)

lieying

jianhong

meiyue

liming

201

2.2.7 包含

list1=['lieying', 'jianhong', 'meiyue', 'liming', 201]

>>> 'lieying' in list1

True

>>> 201 in list1

True

2.3 元组  不可变列表

ages = (11,22,33,44,55)

ages = tuple((11,22,33,44,55))

2.4 字典

person = {‘name’:’meiyue’,’age’:’26’,’phone’:’18310015326’}

person = dict({‘name’:’meiyue’,’age’:’26’,’phone’:’18310015326’})

字典是无序的  列表时有序的 所以字典的查询速度比列表快

2.4.1 索引    #只可以索引键 不能索引值 因为键是唯一的(不能为列表和字典,可以为字符串或者整数)

>>> person = {'name':'meiyue','age':'26','phone':'18310015326'}

>>> 'age' in person

True

>>> 'meiyue' in person

False

2.4.2 新增

>>> person['sex']='man'

>>> person

{'age': '26', 'sex': 'man', 'phone': '18310015326', 'name': 'meiyue'}

2.4.3 删除

>>> del person['age']  #指定键删除

>>> person

{'sex': 'man', 'phone': '18310015326', 'name': 'meiyue'}

>>> person.popitem()  #随机删除

('sex', 'man')

>>> person

{'phone': '18310015326', 'name': 'meiyue'}

键值对

2.4.4 循环

>>> person['sex']='man'

>>> person['age']=26

>>> person

{'age': 26, 'sex': 'man', 'phone': '18310015326', 'name': 'meiyue'}

>>> for n in person:

    print(n,person[n])

age 26

sex man

phone 18310015326

name meiyue

2.4.5 长度

>>> len(person)

4

2.4.6 查 键值对

>>> person['name']

'meiyue'

>>> person['age']

26

2.4.7 改

>>> person['age']=8

>>> person

{'age': 8, 'sex': 'man', 'phone': '18310015326', 'name': 'meiyue'}

2.5 数据运算  

算数运算:

比较运算:

赋值运算:

逻辑运算:

成员运算:

身份运算:

位运算:

2.6 判断If..else

[root@linux-node1 scripts]# cat login.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

 

import getpass

 

 

name = raw_input('请输入用户名:')

pwd = getpass.getpass('请输入密码:')

 

if name == "alex" and pwd == "cmd":

    print("欢迎,alex!")

else:

    print("用户名和密码错误")

2.7 loop循环for

>>> for i in range(5):

    print("loop:", i )

 

loop: 0

loop: 1

loop: 2

loop: 3

loop: 4

>>> for i in range(10):

    if i<5:

        continue #不往下走了,直接进入下一次loop

    print("loop:", i )

   

loop: 5

loop: 6

loop: 7

loop: 8

loop: 9

 >>> for i in range(10):

    if i>5:

        break #不往下走了,跳出本层循环

    print("loop:", i )

loop: 0

loop: 1

loop: 2

loop: 3

loop: 4

loop: 5

>>> 

2.8 While loop

死循环

count = 0

while True:

    print("你是我的玫瑰,你是我的爱...",count)

count +=1

循环一百次退出

count = 0

while True:

    print("你是我的玫瑰,你是我的爱",count)

    count +=1

    if count == 100:

      print("你太累了,也该歇歇了")

      break

    

count = 0

while count<100:

  print("你是我的玫瑰,你是我的爱",count)

  count +=1

    

2.9 三元运算

result = 值1 if 条件 else 值2

如果条件为真:result = 值1
如果条件为假:result = 值2

原文地址:https://www.cnblogs.com/lieying6011/p/7150260.html