初识python
一、为什么选择python
- python语言简洁明了;
- python语言可以实现web程序开发,GUI开发,和其他项目,是目前的主流语言;
二、python编码风格
一、缩进统一
python第一行一定要顶格写,同一级别代码块要缩进一致;
一个缩进为4个空格,也就是一个tab;
二、变量
变量的第一个祖父必须是是字母(大小写都行)或者是下划线(_);
变量名可以有字母(大写或小写)、数字(0-9)和下划线(_)组成;
有效标识符如:i、_my_name、abc123、abc_123;
无效标识符如:1a、your favorite、your-favorite;
常量:是指其值保持不变的量
变量:值得是值变化的量称为变量
通常python中是没有常量的,一般的,常量都以大写字母来定义,
如:AGE = 20,这里大写表示常量是一个约定;
如果是age = 20,则这个age就是一个变量;
在python中,以下变量名以被内置方法占用,不能用来做变量的标识符:
['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']
三、python环境
一、安装python
windows:
1、下载安装包 https://www.python.org/downloads/ 2、安装 默认安装路径:C:\python27 3、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 如:原来的值;C:\python27,切记前面有分号
linux:
linux系统内置了python环境,不用安装
四、python入门
一、第一句python
vim hello.py
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 print("hello world")
执行
python hello.py
./ hello.py
解释
1 #! /usr/bin/env python 此即为让系统去env(environment,系统环境变量中去找python解释器,来执行下面代码) 2 # -*- coding:utf-8 -*- 声明编码格式为utf-8
二、编码格式
python解释器在加载.py文件是,会对其中的代码进行编码(默认是ASCII码格式)
ASCII码:(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号;
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多;
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),所以如果不指定编码类型,如果有中文就会报错。
三、python如何工作的
首先python把你写的代码读到内存中,然后放到编译器生成字节码后执行,然后生成机器码给cpu进行执行;
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。(任何字节码通过反编译都可以得到代码)
四、变量
字符串的值是不能修改的;一旦修改,即重新创建;
如:
name1 = 'james' name2 = name1 name1 = 'shuaige'
这里的name1 = 'james'
name2 = 'james'
虽然后面name1 = ‘shuaige’,此只是在内存中又把name1指向了shuaige,重新新建了一个;
集合不一样:
1 name1 = ['tianshuai','eric','alex'] 2 如果把name2 = name1
这里只要name1变了,name2也会跟着变;
五、用户输入
1 #! /usr/bin/env python 2 # -*-coding:udt-8 -*- 3 4 name = row_input("Enter your name:") 5 print(name)
将用户输入的内容赋值给name,此row_input是等待用户输入
在用户输入密码时,如果想要用户数输入密码时不可见,可用getpass.getpass方法:
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 import getpass #导入getpass模块 5 6 pwd = getpass.getpass("Enter your password:") 7 print(pwd)
六、流程控制
if else和if elif else
if else
if 条件: #如果条件为真时,执行代码块 代码块 else: #如果条件为假时,执行代码块 代码块
if elif else if 条件: #如果条件为真时,执行代码块 代码块 elif 条件: #如果条件为真时,执行代码块 代码块 else: #如果条件为假时,执行代码块 代码块
需求一:用户登录身份验证
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 import getpass 5 6 name = getpass.getpass("userName:") 7 pwd= getpass.getpass("passWord:") 8 if userName == 'Wenzm' and passWord == '123': 9 print("Login success") 10 else: 11 print("Invalid userName or passWord.")
需求二:根据用户输出其权限
1 #! /usr/bin/env python 2 # -*- coding:utf:8 -*- 3 ''' 4 wenzm--->普通用户 5 eric--->管理用户 6 alex--->超级用户 7 ''' 8 9 user = raw_input("username:") 10 if user == 'wenzm': 11 print("普通用户") 12 elif user == 'eric' 13 print("管理用户") 14 elif user == 'alex' 15 else: 16 print("用户名错误")
while循环:
原理:如果条件为真,则继续运行,为假则停止运行
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #输出数字1-10 5 n = 1 6 while n<=10: #当n<=10时,一直打印n 7 print(n) 8 n += 1 #每执行一次n = n+1
break:用于跳出当前循环,break下面的代码将不再执行;
continue:跳出本次循环,继续下一次循环;
1 #! /use/bin/env python 2 # -*- coding:utf-8 -*- 3 4 # 输出10以内除5、8以外的数 5 n = 1 6 while n <= 10: 7 if n == 5 or n == 8: 8 n += 1 9 continue #跳出本次循环,不会执行下面的print(n) 10 print(n) 11 n += 1
求100以内的和:
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 n = 1 5 sum = 0 6 while n<=100: 7 sum += n 8 n += 1 9 print(sum)
求100以内的基数和:
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 n = 1 5 sum = 0 6 while n<=100: 7 sum += n 8 n += 2 9 print(sum)
求100以内的偶数和
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 n = 0 5 sum = 0 6 while n<=100: 7 sum += n 8 n += 2 9 print(sum)
求1-2+3-4+5...99的所有数的和
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = '' 5 n = 1 6 sum = 0 7 while n<=99: 8 if n % 2 == 0: 9 sum -= n 10 s = s + '-' + str(n) 11 else: 12 sum += n 13 s = s + '+' + str(n) 14 n += 1 15 print(s) 16 print(sum)
用户有三次机会登录
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 n = 0 5 while n <=3: 6 user = input("user_name:") 7 pwd = input("pass_word:") 8 if user == "alex" and pwd == "123": 9 print('welcome!!!!') 10 break 11 else: 12 print("try again") 13 n += 1
七、python运算符
1、算术运算符:
| 操作符 | 描述符 | 例子 |
|---|---|---|
| + | 加法 - 对操作符的两侧增加值 | a + b = 30 |
| - | 减法 - 减去从左侧操作数右侧操作数 | a - b = -10 |
| * | 乘法 - 相乘的运算符两侧的值 | a * b = 200 |
| / | 除 - 由右侧操作数除以左侧操作数 | b / a = 2 |
| % | 模 - 由右侧操作数和余返回除以左侧操作数 | b % a = 0 |
| ** | 指数- 执行对操作指数(幂)的计算 | a**b = 10 的幂 20 |
| // | 取整除 - 操作数的除法,其中结果是将小数点后的位数被除去的商。 | 9//2 = 4 而 9.0//2.0 = 4.0 |
2、比较运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 检查,两个操作数的值是否相等,如果是则条件变为真。 | (a == b) 不为 true. |
| != | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a != b) 为 true. |
| <> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a <> b) 为 true。这个类似于 != 运算符 |
| > | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | (a > b) 不为 true. |
| < | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | (a < b) 为 true. |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | (a >= b) 不为 true. |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | (a <= b) 为 true. |
3、逻辑运算符
| 运算符 | 描述 | 示例 |
| and | 布尔“与”,-如果x为False,x and y 返回False,否则它返回y的计算值(a and b 返回True) | a and b 返回True |
| or | 布尔“或”,-如果x为True,它返回True,否则它返回y的计算值 | a or b 返回True |
| not | 布尔“非”,-如果x为True,它返回False,如果x为False,返回True | not(a and b),返回False |
4、成员运算符
| 运算符 | 描述 | 示例 |
| in | 如果指定的序列中找到值返回True,否则返回False | a in li 返回 True |
| not in | 如果指定序列中没有找到返回True,否则返回False | a not in li 返回False |
八、基本数据类型
数字:int
字符串:str
布尔值:bool
列表:list
元组:tuple
字典:dict
ps:所有的数据类型的方法都保存在对应的类中;
查看对象的类或者对象所具有的方法:
1.通过类型查找;
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 temp = 'alex' 5 print(type(temp)) #打印temp对象类型
2.通过dir()获取所有方法
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 temp = 'alex' 5 print(dir(temp)) #获取所有方法,并没有吧方法怎么用打印出来
3.通过help,type
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 help(type(temp))
4.直接单击
temp = 'alex'
temp.upper()
鼠标放在该方法上,Ctrl + 鼠标左键即可定位到此方法,则可自动定位;
一、基本数据类型常用功能
1.整数(int)
a.__add__
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #.__add__ #加法运算 5 a1 = 123 6 a2 = 456 7 print(a1 + a2) 8 print(a1.__add__(a2))
b.bit_length()获取可表示二进制的最短位数
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #1:00000001 5 #2:00000010 6 #3:00000011 7 #4:00000100 8 n = 4 #0000100 9 print(type(n)) 10 print(n.bit_length())
2.字符串(str)
2.1capitalize()首字母大写
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 a = 'alex' 5 print(a.capitalize())
2.2center()居中
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = 'wenzm' 5 print(name.center(20, '-')) #name 居中,剩余字符用‘-’填充
2.3count()序列开始到结束,某中字符出现的次数
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = 'wenzm' 5 print(name.count('e', 0, 5)) #返回字符‘e’在序列0-5中出现的次数
2.4 endswith() 判断序列内是否以某字符结束,是返回True,否则返回False
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 temp = 'hello' 5 print(temp.endswith('p', 0, 4)) #判断序列0,4是否以p结尾,如不传序列,则默认为整个字符
2.5 expandtabs() 把\t转换成空格
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 content = 'hello\tworld' 5 print(content.expandtabs(20)) #将\t转换成了20个空格
2.6 find() 从左向右找传的字符,找到就返回该字符所在的序列,否则返回-1
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 content = 'hello world' 5 print(content.find('e'))
2.7 rfind() 从左向右找传的字符,找到就返回该字符所在的序列,否则返回-1
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 content = 'hello world' 5 print(content.rfind('e'))
2.8 format() 格式化输出
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = 'hell0 {0}, age {1}' 5 # {0} {1}为占位符 6 print(s.format('alex', 20)) # format 方法把你的参数传给上面的占位符
2.9 isalnum()判断是否只包含数字和字母,是返回True,否则返回false
isalpha()) # 判断是否只包含字母
islower()) # 判断是否小写
isspace()) # 判断是否空格
istitle()) # 判断是否为标题 所有首字母大写
isupper()) # 判断是否全部为大写
3.0 join()
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 li = ['alex', 'eric'] 5 s = '_'.join(li) # 用_把列表的每个元素链接起来,str类型,也可以是元祖,方法一样
3.1 ljust() 左对齐
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = 'wenzm' 5 print(name.ljust(20,'-')) # 左对齐,长度20,填充内容-
3.2 rjust() 右对齐
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = 'wenzm' 5 print(name.rjust(20,'-')) # 右对齐,长度20,填充内容-
3.3 lstrip() 移除左边空格
rstrip() 移除右边空格
strip() 移除空格,中间的不管
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = ' wen zm ' 5 print(name) 6 print(name.lstrip()) #移除左边空格 7 print(name.rstrip()) #移除右边空格 8 print(name.strip()) #移除空格,中间的不管
3.4 partition() 根据传参,把字符串分割成三部分,返回一个元组
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = 'alex sb alex' 5 print(s.partition('sb')) # 根据传参sb,把字符串分割成三部分,返回一个元组
3.5 split() 找到入参的位置,把字符分割成两个部分并返回一个列表,maxsplit最大分割次数
rsplit()
startswith()
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = 'wenzmwenzm' 5 print(s.split('e', 1)) # 找到入参的位置,从左向右并把剩余的分成几部分,返回列表, maxsplit最大分割次数 6 print(s.rsplit('e', 1)) # 找到入参的位置,从右向左把剩余的分成几部分,返回列表, maxsplit最大分割次数 7 print(s.startswith('a')) #判断是否以某个字符开头
3.6 swapcase() 大小写转换
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = 'WeNzM' 5 print(name.swapcase())
3.7 title() 变成标题,首字母大写
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 content = 'hello world' 5 print(content.title())
二、字符串操作
索引、长度、切片、循环
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 # 索引 5 temp = 'wenzm' 6 print(temp[0]) #打印temp第0个索引位置的字符 7 print(temp[1]) #打印temp第个索引位置的字符 8 9 # 长度 10 print(len(temp)) #打印temp 长度 11 12 # 切片 13 print(temp[0:2]) # 打印0<= <2索引位置的字符也可写成temp[:2] 14 15 # 循环 16 start = 0 17 while start < len(temp): 18 print(temp[start]) 19 start += 1 20 21 for item in temp: 22 print(item) 23 24 for item in temp: 25 if item == 'n': # 不打印n 26 continue # 跳出本次循环,此次循环不执行print语句 27 print(item) 28 29 for item in temp: 30 if item == 'e': # 不打印n 31 break # 跳出循环,不输出后面内容 32 print(item)

浙公网安备 33010602011771号