1. Python安装
在官网www.python.org下载安装程序,可以支持的操作系统linux,windows,mac.
Python版本:2.x和3.x,分别有x86和x64.
在Windows系统下安装完成后,需要配置一下环境变量,方便使用Python交互式模式。
https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe
查看当前系统的python版本命令:python -V
2. Python特点
Python3.x 默认使用UTF-8编码,Python2.x默认使用ASCII编码。
注释:使用#号,单行注释;使用单引号双引号,多行注释。
采用行缩进的方式,表示代码块。
3. Python解释器工具Pycharm
安装激活pycharm
4. 数据类型之数字类型
int整型 float浮点型 complex复数
5. 数据类型之字符串
name=”yangjianbo” print(name)
name=’yangjianbo’ print(name)
name=’’’yangjianbo’’’ print(name)
+ 字符串连接
例子:
a="wo" b="shi" c="shui" d=a +' ' +b +' ' + c print(d)
* 字符串重复输出
a='yangjianbo' c=a*2 print(c)
[] 取字符串的第几个字符,从左到右从0开始,从右到左从-1开始。
a='yangjianbo'
print(a[-2])
[:] 取字符串的一部分
a='yangjianbo' print(a[1:4]) 从索引1开始,从左到右的第4位结束,不包含第4位 输出的结果为ang.
6. 数据类型之列表
特点:用方括号括起来,元素之间用逗号隔开
列表索引从0开始(从左往右),从-1开始(从右往左)
system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3] print (system) 输出结果如下: ['yangjianbo', 'wangyanhe', 'gaozhongmin', 1, 2, 3]
查看列表的长度
system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3] print (len(system))
输出结果
6
输出列表list索引为1的元素,访问列表中的元素
system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3] print (system[1]) 输出结果 yangjianbo
更新列表元素
xitongbu=['yangjianbo','wangyanhe','gaozhongmin'] print (xitongbu) xitongbu[2]='gushuwei' print (xitongbu) 输出结果 gushuwei
删除列表元素
xitongbu=['yangjianbo','wangyanhe','gaozhongmin'] print (xitongbu) xitongbu[2]='gushuwei' print (xitongbu) del xitongbu[2] 删除索引为2的元素 print (xitongbu) del xitongbu 删除整个列表 print (xitongbu)
输出结果:没有对应的索引了
合并列表
list1=[1,2,3] list2=[4,5,6] list3=list1+list2 print (list3) 输出结果 [1, 2, 3, 4, 5, 6]
重复元素
list=['yangjianbo']*4 print (list) 输出结果 ['yangjianbo', 'yangjianbo', 'yangjianbo', 'yangjianbo']
元素是否在列表中
list=['yangjianbo','wangyanhe','gaozhongmin'] if 'yangjianbo' in list:
print ("You are right!") else: print ("You are wrong!") 输出结果 You are right!
列表函数
列表长度 len() 列表最大值 max() 如果是整型直接比大小,如果是字符串,比英文字母靠后 列表最小值 min() xitongbu=['yangjianbo','zazgyanhe','zaozhongmin'] print (min(xitongbu)) 列表转换 list() 把元组转换为列表 ruanjianbu=('wangyanzhe','wangzhibing','liushuang') ruanjianbu=list(ruanjianbu) print (type(ruanjianbu))
列表方法
增加元素 默认会在最后添加一个新元素,这个方法没有返回值。 向原来的列表添加一个新的元素,这个方法只能添加一个元素,添加两个会有报错。 list.append(obj) 例子: xitongbu=['yangjianbo','wangyanhe'] xitongbu.append(2222) print (xitongbu) 输出结果 ['yangjianbo', 'wangyanhe', 2222] 删除元素 默认会删除最后一个元素,并且返回该元素的值。 list.pop() 例子: xitongbu=['yangjianbo','wangyanhe'] xitongbu.pop(0) print (xitongbu) 输出结果 ['wangyanhe'] 插入元素 list.insert(index.obj) 例子: 在第一个元素添加。 xitongbu=['yangjianbo','wangyanhe'] xitongbu.insert(0,'gaozhongmin') print (xitongbu) 输出结果 ['gaozhongmin', 'yangjianbo', 'wangyanhe'] 统计某个元素的数量 list.count(obj) 例子: xitongbu=['yangjianbo','wangyanhe','yangjianbo','yangjianbo'] print (xitongbu.count('yangjianbo')) 输出结果 3 找出某个元素的索引号,如果有多个相同的元素,列出第一个匹配元素的索引号 list.index(obj) 例子: xitongbu=['yangjianbo','wangyanhe','yangjianbo','yangjianbo'] print (xitongbu.index('wangyanhe')) 输出结果 1 拿一个其他列表扩展列表 list1=['yangjianbo','wangyanhe'] list2=[22,33] list2.extend(list1) print(list2) 输出结果 [22, 33, 'yangjianbo', 'wangyanhe'] 删除某个元素的第一个匹配项 list.remove(obj) 例子: xitongbu=['yangjianbo','wangyanhe','gaozhongmin'] xitongbu.remove('yangjianbo') print (xitongbu) 输出结果 ['wangyanhe','gaozhongmin'] 反向列表中元素 list.reverse 顺序倒序。 例子: xitongbu=['yangjianbo','wangyanhe','gaozhongmin'] xitongbu.reverse() print (xitongbu) 输出结果 ['gaozhongmin', 'wangyanhe', 'yangjianbo'] 对列表进行排序 list.sort(obj) xitongbu=['yangjianbo','wangyanhe','gaozhongmin','liming','a'] xitongbu.sort() print (xitongbu) 输出结果 ['a', 'gaozhongmin', 'liming', 'wangyanhe', 'yangjianbo']
7. 数据类型之Tuple元组
特点:使用小括号,元组的元素不能被修改,只能读取。
当元组的元素只有一个的时候,必须在元素后面加一个逗号,否则,python会认为这是一个字符串。
修改元组中的元素 例子: yuanzu=('yangjianbo','gaozhongmin','wangyanhe') yuanzu[0]='zhangxueyou' print (yuanzu[0]) 输出结果直接报错了。 删除元组 删除元组中的元素,会有报错 但是可以删除整个元组 例子: del yuanzu
8. 集合
9. Dictionary字典
特点:每个键值组成一对,键值之间使用冒号隔开,整个字典使用{}。
每对之间使用逗号隔开。
键是唯一的,但值不必。
键可以是字符串数字元组,不可以是列表,值可以使用任何类型。
xitongbu={['name']:'yangjianbo','age':30} print (xitongbu) 输出结果 TypeError: unhashable type: 'list'
字典没有索引的概念,查看值的时候,不需要使用索引。
xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
print (type(xitongbu))
print (xitongbu['name'])
输出结果
<class 'dict'>
yangjianbo
必须写明键名称。
每个键只能出现一次,如果出现两次,以后一个为准。
xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan','name':'wangyanhe'}
print (xitongbu)
输出结果
{'name': 'wangyanhe', 'zhiwu': 'xitongguanliyuan'}
修改已存在的键的值。
xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
xitongbu['name']='wangyanhe'
print (xitongbu['name'])
输出结果
wangyanhe
添加一个新的键值。
xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
xitongbu['age']='30'
print (xitongbu)
输出结果
{'name': 'yangjianbo', 'zhiwu': 'xitongguanliyuan', 'age': '30'}
删除字典中的某个元素
xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
xitongbu['age']='30'
del xitongbu['name']
print (xitongbu)
输出结果
{'zhiwu': 'xitongguanliyuan', 'age': '30'}
删除整个字典
del xitongbu
输出的时候,会找不到xitongbu的定义。
清空字典的内容
xitongbu.clear()
xitongbu变量的定义还在,只是内容被清空。
10. Python运算符
算术运算符
+ 加法 - 减法 * 乘法 / 除法 % 余数 ** 幂数 // 除完的商数
比较算术符
== 等于 >= 大于等于 <= 小于等于 != 不等于 > 大于 < 小于 例子: a=12 b=19 if a > b: print("you are right") else:
print("you are wrong!")
赋值运算符
= 普通赋值 += 加法赋值 例子: num=1 a=5 num+=a print(num) 相当于:num=num+a ,输出的结果为:6 -= 减法赋值 例子: num=1 a=5 num-=a print(num) 相当于: num=num-a,输出的结果为:-4 *= 乘法赋值 例子: num=9 a=5 num*=a print(num) 相当于num=num*a,输出的结果:45 /= 除法赋值 num=8 a=3 num/=a print(num) 相当于num=num/a,输出的结果:2.6666666666666665 //= 除法商数赋值 num=10 a=3 num//=a print(num) 相当于num=num//a,输出的结果为:3 %= 除法余数赋值 num=10 a=3 num%=a print(num) 相当于num=num%a,输出的结果为:1 **= 幂数赋值 num=10 a=3 num**=a print(num) 相当于num=num**a,输出的结果为:1000
Python位运算符
&: 参与运算的两个值,如果对应位都为1,则结果为1. a=5 0101 b=6 0110 c=a&b print(c) 输出结果为0100,转换为十进制为4. |: 参与运算的两个值,如果对应位有一个为1,则结果为1. a=5 0101 b=6 0110 c=a|b print(c) 输出结果为0111,转换为十进制为7 ^: 表示对应位的不同时,结果为1. a=5 0101 b=6 0110 c=a^b print(c) 输出结果为0011,转换为十进制为3. ~:对应的二进制取反,-x-1 a=5 b=6 c=~b print(c) 输出的结果为 -7
Python逻辑运算符
and 与 or 或 not 非
11. 条件语句
条件语句的执行过程
语法结构
if 判断条件:
执行语句……
else:
执行语句……
name='yangjianbo' if name=='yangjianbo': print('了四五度') else: print('pgone')
if有多个判断条件
name='yangjianbo' age=20 if name=='yangjianbo' and age >25: print('了四五度') else: print('pg one')
当判断的值有多个的时候,就需要使用if ... elif ... else
语法结构:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
age=input('请输入你的年龄>>:') age=int(age) if age>50: print('奶奶,你好!') elif age>30: print('阿姨,你好!') elif age>20: print('姐姐,你好!') else: print('老妹,你好!')
12. 循环语句
循环结构图
当条件符合时,则进行循环,否则,循环结束。
循环方式
while循环
while 判断条件:
执行语句……
for循环
嵌套循环
count=0 while count<9: print("count:",count) count=count+1 print("循环结束!")
13. continue语句
count=0 while count<9: if count==6: count=count+1 continue else: print("count:",count) count=count+1 print("循环结束!")
输出的结果:
从这个例子中,可以看出continue跳出count等于6时的循环。但是仍然继续7和8的循环。
14. break语句
count=0 while count<9: if count==6: count=count+1 break else: print("count:",count) count=count+1 print("循环结束!")
输出的结果:
从这个例子中,可以看出break跳出整个循环,直接执行循环结束了。
15. while +else
只有while循环完成,才会执行else后面的语句,如果while循环被break,则不会执行else后面的语句。
16. 作业
#while练习题 #求1-100的所有数的和: sum=0 count=1 while count<=100: sum=sum+count count+=1 else: print(sum)
输出结果:5050 #输出1-100内的所有奇数 #奇数就是除2,余数为1. count=1 while count<=100: if count%2==1: print (count) count+=1 else: count+=1
输出的结果:1 3 5 7 ... 99
#输出1-100内的所有偶数 #偶数就是除2,余数为0. count=1 while count<=100: if count%2==0: print (count) count+=1 else: count+=1
输出结果:2 4 6 8 10 ... 100 #求1-2+3-4+5....99的所有数的和 count=1 sum_jishu=0 while count<=99: if count%2!=0: sum_jishu+=count count+=2 else: print("奇数和完成!") sum_oushu = 0 count=2 while count<=99: if count%2==0: sum_oushu+=count count+=2 else: print("偶数和完成!") jieguo=sum_jishu-sum_oushu print(jieguo)
输出结果:
奇数和完成!
偶数和完成!
50
优化代码
#求1-2+3-4+5....99的所有数的和
count=1
sum=0
while count<=99:
if count%2==0:
sum-=count
else:
sum+=count
count+=1
else:
print(sum)
结果为50
#用户登录(三次机会尝试)
name='yangjianbo'
pwd=123
count=0
while count<=2:
username = input("用户名:")
password = input("密码:")
if username==name and password==pwd:
print("登录成功!")
break
else:
print("登录失败!请重新登录!")
count+=1
else:
print("您已经登录三次!")
#猜年龄
age=18
count=0
while count<=2:
guess=int(input("猜年龄:"))
if guess==age:
print("猜对了!")
break
count=count+1
else:
print("三次都不正确!")
#猜年龄游戏升级版,
age=18
count=0
while count<=3:
if count==3:
choice=input("还要继续猜吗?输入Y or N>>")
if choice=='Y':
count=0
else:
break
guess = int(input("猜年龄:"))
if guess==age:
print("猜对了!")
break
count+=1
#格式化输出
print("My name is %s ,My age is %d" %('yangjianbo',18))
print ("Name : %s" %'yangjianbo')
print ("Age : %s" %22)
print ("Sex : %s" %'male')
print ("Age : %s" %'Teacher')
%s 可以接收字符串和整型
%d 只能接收整型
第一天作业:
#升级需求: student_list=[{'yangjianbo':'123'},{'wangyanhe':'123456'}] count=0 while count<3: username=input('用户名>>').strip() userpassword=input('密码>>').strip() with open('lock.txt','r') as lock: for i in lock: i=i.strip('\n') if username == i: print('该账号已经被锁定!请换其他账号!') break for i in student_list: if username in i.keys() and userpassword in i.values(): print('欢迎您到来,您登陆成功了!') break else: count+=1 print("请重新输入用户名和密码") else: print('您已经输入三次了,账户被锁定!') with open('lock.txt','a') as lock_file: lock_file.write('%s\n'%username)
要创建一个文件lock.txt,代表数据库用来存储被锁定的账户。
满足需求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息)
- 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)