1. Python安装
在官网www.python.org下载安装程序,可以支持的操作系统linux,windows,mac.
Python版本:2.x和3.x,分别有x86和x64.
在Windows系统下安装完成后,需要配置一下环境变量,方便使用Python交互式模式。
查看当前系统的python版本命令:python -V
2. Python特点
Python3.x 默认使用UTF-8编码,Python2.x默认使用ASCII编码。
注释:使用#号,单行注释;使用单引号双引号,多行注释。
采用行缩进的方式,表示代码块。
3. Python解释器工具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位结束
输出的结果为ang.
5. 数据类型之列表
- 特点:用方括号括起来,元素之间用逗号隔开
列表索引从0开始(从左往右),从-1开始(从右往左)
例子:
system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3]
print (system)
输出的结果:
- 查看列表的长度
例子:
system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3]
print (len(system))
输出的结果:
- 输出列表list索引为1的元素,访问列表中的元素
例子:
system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3]
print (system[1])
- 更新列表元素
例子:
xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
print (xitongbu)
xitongbu[2]='gushuwei'
print (xitongbu)
- 删除列表元素
例子:
xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
print (xitongbu)
xitongbu[2]='gushuwei'
print (xitongbu)
del xitongbu[2] 删除索引为2的元素
print (xitongbu)
del xitongbu 删除整个列表
print (xitongbu)
- 列表操作符
len(list) 长度
[1,2,3]+[4,5,6]
例子:
list1=[1]
list2=[2]
# print (type(list1))
list3=list1+list2
print (list3)
重复元素
list=['yangjianbo']*4
print (list)
元素是否在列表中。
list=['yangjianbo','wangyanhe','gaozhongmin']
if 'yangjianbo' in list:
print ("You are right!")
else:
print ("You are wrong!")
- 列表函数
len() 长度
max() 最大值,如果是整型直接比大小,如果是字符串,比英文字母靠后。
例子:
xitongbu=['yangjianbo','zazgyanhe','zaozhongmin']
print (max(xitongbu))
min() 最小值
例子:
xitongbu=['yangjianbo','zazgyanhe','zaozhongmin']
print (min(xitongbu))
list(元组名) 转换类型
例子:
ruanjianbu=('wangyanzhe','wangzhibing','liushuang')
ruanjianbu=list(ruanjianbu)
print (type(ruanjianbu))
输出的结果显示为list.
列表方法
增加元素
默认会在最后添加一个新元素,这个方法没有返回值。
list.append(obj)
例子:
xitongbu=['yangjianbo','wangyanhe']
xitongbu.append(2222)
print (xitongbu)
向原来的列表添加一个新的元素,这个方法只能添加一个元素,添加两个会有报错。
删除元素
默认会删除最后一个元素,并且返回该元素的值。
list.pop()
例子:
xitongbu=['yangjianbo','wangyanhe']
xitongbu.pop(0)
print (xitongbu)
插入元素
list.insert(index.obj)
例子:
xitongbu=['yangjianbo','wangyanhe']
xitongbu.insert(0,'gaozhongmin')
print (xitongbu)
在第一个元素添加。
统计元素的数量
list.count(obj)
例子:
xitongbu=['yangjianbo','wangyanhe','yangjianbo','yangjianbo']
print (xitongbu.count('yangjianbo'))
找出第一个匹配项的索引
list.index(obj)
例子:
xitongbu=['yangjianbo','wangyanhe','yangjianbo','yangjianbo']
print (xitongbu.index('wangyanhe'))
拿一个其他列表扩展列表
list.extend(list1)
list1=['yangjianbo','wangyanhe']
list2=[22,33]
list2.extend(list1)
print(list2)
删除某个值的第一个匹配项
list.remove(obj)
例子:
xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
xitongbu.remove('yangjianbo')
print (xitongbu)
反向列表中元素
list.reverse
顺序倒序。
例子:
xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
xitongbu.reverse()
print (xitongbu)
对列表进行排序
list.sort(obj)
6. 数据类型之Tuple元组
-
- 特点:使用小括号,元组的元素不能被修改,只能读取。
当元组的元素只有一个的时候,必须在元素后面加一个逗号,否则,python会认为这是一个字符串。
-
- 修改元组中的元素,
例子:
yuanzu=('yangjianbo','gaozhongmin','wangyanhe')
yuanzu[0]='zhangxueyou'
print (yuanzu[0])
输出结果直接报错了。
-
- 删除元组
删除元组中的元素,会有报错
但是可以删除整个元组
例子:
del yuanzu
7. 集合
8. Dictionary字典
-
- 特点:每个键值组成一对,键值之间使用冒号隔开,整个字典使用{}。
每对之间使用逗号隔开。
键是唯一的,但值不必。
键可以是字符串数字元组,不可以是列表,值可以使用任何类型。
例子:
xitongbu={['name']:'yangjianbo','age':30}
print (xitongbu)
输出的结果报错,
字典没有索引的概念,查看值的时候,不需要使用索引。
例子:
xitongbu={ 'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
print (type(xitongbu))
print (xitongbu['name'])
输出结果,必须写明键名称。
每个键只能出现一次,如果出现两次,以后一个为准。
例子:
xitongbu={ 'name':'yangjianbo','zhiwu':'xitongguanliyuan','name':'wangyanhe'}
print (xitongbu)
-
- 修改已存在的键的值。
例子:
xitongbu={ 'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
xitongbu['name']='wangyanhe'
print (xitongbu['name'])
-
- 添加一个新的键值。
例子:
xitongbu={ 'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
xitongbu['age']='30'
print (xitongbu)
-
- 删除字典
删除字典中的某个元素
例子:
xitongbu={ 'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
xitongbu['age']='30'
del xitongbu['name']
print (xitongbu)
删除整个字典
del xitongbu
输出的时候,会找不到xitongbu的定义。
清空字典的内容
xitongbu.clear()
xitongbu变量的定义还在,只是内容被清空。
-
- 字典函数
cmp(字典1,字典2) 比较
len() 长度
str() 可打印的字符串
type() 类型
9. Python运算符
算术运算符
+ 加法
- 减法
* 乘法
/ 除法
% 余数
** 幂数
// 除完的商数
比较算术符
== 等于
>= 大于等于
<= 小于等于
!= 不等于
> 大于
< 小于
例子:
a=12
b=19
if a > b:
print("you are right")
else:
print("you are wrong!")
l 赋值运算符
= 普通赋值
+= 加法赋值
例子:
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位运算符
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.
~:对应的二进制取反,1取0,0取1.(不明白)
a=5 0101
b=6 0110
c=~b
print(c)
输出的结果为
Python逻辑运算符
and
-
- or
not
10. 条件语句
l 条件语句的执行过程
if 判断条件:
执行语句……
else:
执行语句……
例子:
name='yangjianbo'
if name=='yangjianbo':
print('了四五度')
else:
print('pgone')
因为符合if的条件,条件为true,所以执行if后面的代码,打印出了四五度.
if有多个判断条件,应该怎么写呢?
例子:
name='yangjianbo'
age=20
if name=='yangjianbo' and age >25:
print('了四五度')
else:
print('pg one')
if的判断条件为name等于yangjianbo,并且age要大于25,但是当前age不符合条件,所以,直接执行else后面的代码。
当判断的值有多个的时候,就需要使用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('老妹,你好!')
11. 循环语句
循环结构图
当条件符合时,则进行循环,否则,循环结束。
循环方式
while循环
while 判断条件:
执行语句……
for循环
嵌套循环
例子:
count=0
while count<9:
print("count:",count)
count=count+1
print("循环结束!")
当count小于9时,条件符合,执行print,并count+1。
当count>=9时,条件不符合,执行与while对齐的print,循环结束。
12. 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的循环。
13. break语句
count=0
while count<9:
if count==6:
count=count+1
break
else:
print("count:",count)
count=count+1
print("循环结束!")
输出的结果:
从这个例子中,可以看出break跳出整个循环,直接执行循环结束了。
14. while +else:
只有while循环完成,才会执行else后面的语句,如果while循环被break,则不会执行else后面的语句。
15. 作业
#while练习题
#求1-100的所有数的和:
sum=0
count=1
while count<=100:
sum=sum+count
count+=1
else:
print(sum)
#输出1-100内的所有奇数
#奇数就是除2,余数为1.
count=1
while count<=100:
if count%2==1:
print (count)
count+=1
else:
count+=1
#输出1-100内的所有偶数
#偶数就是除2,余数为0.
count=1
while count<=100:
if count%2==0:
print (count)
count+=1
else:
count+=1
#求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
else:
print("三次都不正确!")
#猜年龄游戏,老师的代码,更简单!
age=18
count=0
while count<=2:
guess=int(input("猜年龄:"))
if guess==age:
print("猜对了!")
break
count+=1
#猜年龄游戏升级版,
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:
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)
满足需求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息)
- 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)