Python第一模块
一、Python简介
二、Python种类
三、Python环境
windows:
1.需要配置环境变量
2.更新:卸载重装
linux:1.常用命令: 查看默认Python版本 Python -V
2.安装:yum install 某某某
四、Hello World 程序:
Windows:
print("Hello World!")
linux:
>>vim hello.py
>> python hello.py
Hello World!
五、变量
声明变量:
#_*_coding:utf8_*_
name = "Alex Li"
变量定义的规则:
1.变量名只能是字母、数字或者下划线的任意组合
2.变量名的第一个字符不能是数字
3.不能为关键字:
如 ‘and’,'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global',
'if', 'import','in', 'import','in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return','try','while','with','yield'
name = "Alex Li" name2 = name print(name,name2) name = "Jack" print("What is the value of name2 now?")
六、字符编码
ASCAII码最多只能表示255个符号 显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,
即:Unicode # -*- coding: utf-8 -*- print "你好,世界“
七、注释:
1.当行注释:#被注释内容
2.多行注释: “““被注释内容"""
八:用户输入
Python2: name = raw_input("What is your name?")
Python3:
name = input ("What is your name?")
print("Hello "+ name )
getpass中的getpass方法: 输入密码时,想设置不可见 ```
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import getpass # 将用户输入的内容赋值给 pwd 变量 4 pwd = getpass.getpass("请输入密码:") # 打印输入的内容 5 print(pwd) ```
九、模块初识**#不懂
Python强大之处在于有丰富的标准库和第三方库
sys:
#-*-coding:utf8-*-
import sys
print(sys.argv)
结果:['test.py', 'helo', 'world'] #把执行脚本时传递的参数获取到了
os:
import os
os.system("df -h") #调用系统命令
结合:
import os,sys
os.system(''.join(sys.argv[1:])) #把用户的输入参数当做一条命令交给os.system来执行
十、pyc是什么
Python是先编译后解释的语言
Python的运行过程: PyCodeObject pyc文件 Python运行时,编译的结果保存在位于内存中的PyCodeObject中,当Python程序运行结束时,
Python解释器则将PyCodeObject写回到pyc文件中 当程序二次运行的时候,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就
重复上面的过程 所以说:pyc文件其实是PyCodeObject的一种持久化保存方式
十一、数据类型
1.数字 int(整型)
32位系统:-2**31 ~ 2**31-1
64位系统:-2**63 ~ 2**63-1 long(长整型)
如果整数发生溢出,则Python自动将整型数据转换为长整数 float(浮点型) 代表小数 占8个字节(64位),
其中52位表示底,11位表示指数,剩下1位表示符号
complex(复数) x+yi x,y都是实数 注:Python中讯在小数字池:-5~257
2.布尔值 真或假 1或0
3.字符串
“hello world”
字符串拼接:Python中的字符串在C语言中体现为是一个字符数组,每次创建字符串的时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,
就需要再次开辟空间,万恶的+号每出现一次就会在内存中重新开辟一块空间
字符串格式化输出:
name = 'alex'
print ("i am %s" %name)
输出: i am alex
name = "alex"
print ("i am "+name) #
输出: i am alex
注意: 字符串: %s 整数: %d 浮点数: %f
字符串常用
功能: 移除空白 分割 长度 索引 切片
4.列表
列表基本操作: 索引 切片 追加 删除 长度 循环 包含
索引:
name1, name2, name3 = "minghu","minglong","minghao"
以上可用列表来代替:
age = 1
name = ["minghu", "minglong", "minghao", 123, age]
for i in range(10) 其中 i 是从0 开始算起的
同样列表的索引值也是从 0 开始的
如:
name[1] = "minglong" name[-1] = 1
一次取出多个数据(列表多次取值顾头不顾尾)
name[0:2] = "minghu","minglong" 列表取值的顺序是从左往右
1 name = ["minglong","minghu","Jack", 22 , 9 , 23 , 3 , 5 ,7] 2 >>name[2:5] 3 ["Jack",22,9] 4 5 >>name[-5:-1] 6 [9,23,3,5] 7 8 >>name[-1:-5] 9 [] 10 11 >>name[-5:] 12 [9,23,3,5,7] 13 14 >>name[0:6] 15 ["minglong","minghu","Jack", 22 , 9 , 23] 16 17 >>name[:6] 18 ["minglong","minghu","Jack", 22 , 9 , 23] 19 20 >>name[:] 21 ["minglong","minghu","Jack", 22 , 9 , 23 , 3 , 5 ,7] 22 23 >>name 24 ["minglong","minghu","Jack", 22 , 9 , 23 , 3 , 5 ,7] 25 26 >>name[:6][2:4] 27 ["Jack",22] 28 29 >>name[:6][2:4][0] 30 Jack 31 32 >>print(name[:6][2:4][0:1]) 33 ["Jack"] 34 35 >>print(name[:6][2:4][0][1]) 36 a
切片:
1 >>name[1] = "Wangminghu" 2 >>name 3 ["minglong","Wangminghu","Jack", 22 , 9 , 23 , 3 , 5 ,7]
插入:
name.insert
>>name.insert(2,"MingGou") >>name ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,7]
追加:
name.append()
1 >>name = ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,7] 2 >>name.append("gaoqiao") print(name) 3 ['minglong', 'Wangminghu', 'MingGou', 'Jack', 22, 9, 23, 3, 5, 7, 'gaoqiao']
删除:
name.remove() 、del
1 name = ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,7] 2 del name[0] 3 print(name) 4 >>['Wangminghu', 'MingGou', 'Jack', 22, 9, 23, 3, 5, 7]
name.extend()
1 name = ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,7] 2 name.extend('ga') 3 print(name) 4 >>['minglong', 'Wangminghu', 'MingGou', 'Jack', 22, 9, 23, 3, 5, 7, 'g', 'a']
name.count()
1 name = ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,22,7] 2 print(name.count(22)) 3 >>2
name.reverse()
1 name = ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,22,7] 2 name.reverse() 3 print(name) 4 >>[7, 22, 5, 3, 23, 9, 22, 'Jack', 'MingGou', 'Wangminghu', 'minglong']
name.sort()
name.sort()只能排序同种数据类型的列表
1 name = ["minglong","Wangminghu", "MingGou" ,"Jack", 22 , 9 , 23 , 3 , 5 ,22,7] 2 name.sort() 3 print(name) 4 >>Traceback (most recent call last): >> File "D:/codes/python/day3/test10.py", line 5, in <module> name.sort() TypeError: unorderable types: int() < str
name.pop() 除掉某个元素
1 name = ["minglong","Wangminghu", "MingGou" ,"Jack",3,4,5,6,7,8,9,10] 2 name.pop(4) 3 print(name) 4 >>['minglong', 'Wangminghu', 'MingGou', 'Jack', 4, 5, 6, 7, 8, 9, 10]
name.copy() = copy.copy()
注:只copy第一层(见笔记),如果是完全克隆的话,则用copy.deepcopy()
Copy只copy第一层的数据,如果第二层及以下层的值改变后,那么copy过后的数据的第二层及以下也会改变,这是因为copy只是copy了第二层的地址,但是没有copy里面的内容
,当地址指向的内容改变之后则整体也会改变
程序见笔记
index 指出位置
name.len() 算出列表的长度
5.元组(不可变列表)
创建元组:
1 ages = (11, 22, 33, 44, 55)
2 或
3 ages = tuple((11, 22, 33, 44, 55))
6.字典(无序)
创建字典:
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
字典常用操作:
索引 新增 删除 键、值、键值对 循环 长度
十二、数据运算
算数运算:+,-,*,/,%,**,//
比较运算:==,!=,>,<,>=,<=
赋值运算:=,+=,-=,*=,/=,%=,**=,//=
逻辑运算: and ; or ; not
成员运算: in ; not in
身份运算: is ; is not
位运算: & 按位与
| 按位或
^ 按位异或
~按位取反
>>右移
<<左移
运算符优先级
十三、表达式if...else
例一:用户登录
# 提示输入用户名和密码 # 验证用户名和密码 # 如果错误,则输出用户名或密码错误 # 如果成功,则输出 欢迎,XXX! #!/usr/bin/env python # -*- coding: encoding -*- import getpass name = raw_input('请输入用户名:') pwd = getpass.getpass('请输入密码:') if name == "alex" and pwd == "cmd": print("欢迎,alex!") else: print("用户名和密码错误")
例二:猜年龄游戏,如果猜错要提示猜大了还是猜小了
#!/usr/bin/env python # -*- coding: utf-8 -*- my_age = 28 user_input = int(input("input your guess num:")) if user_input == my_age: print("Congratulations, you got it !") elif user_input < my_age: print("Oops,think bigger!") else: print("think smaller!")
外层变量,可以被内层代码使用
内层变量,不应被外层代码使用
十四、表达式for loop
for i in range(10)
#_*_coding:utf-8_*_ __author__ = 'gqq' for i in range(10): print("loop:", i )
输出:
loop: 0 loop: 1 loop: 2 loop: 3 loop: 4 loop: 5 loop: 6 loop: 7 loop: 8 loop: 9
continue:退出当次循环进入下一循环
break:退出循环
例:
for i in range(10): if i<5: continue #不往下走了,直接进入下一次loop print("loop:", i )
for i in range(10): if i>5: break #不往下走了,直接跳出整个loop print("loop:", i )
十五、while loop
死循环:
count = 0 while True: print("你是风儿我是沙,缠缠绵绵到天涯...",count) count +=1
count = 0 while True: print("你是风儿我是沙,缠缠绵绵到天涯...",count) count +=1 if count == 100: print("去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼的臭男人..") break
回到猜年龄的例子,最多给三次机会,才不读就退出程序
#!/usr/bin/env python # -*- coding: utf-8 -*- my_age = 28 count = 0 while count < 3: user_input = int(input("input your guess num:")) if user_input == my_age: print("Congratulations, you got it !") break elif user_input < my_age: print("Oops,think bigger!") else: print("think smaller!") count += 1 #每次loop 计数器+1 else: print("猜这么多次都不对,你个笨蛋.")