一.python介绍
Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对
象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989 年发
明,第一个公开发行版发行于1991年。
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL协议 。P
ython语法简洁清晰,特色之一是强制用空白符作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言
制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,
使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有
特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能
要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。
需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平
台的实现。
二.python解释器
1.python解释器的作用是将程序员写得代码翻译成机器语言
2.python目前有两种版本:python2.7.x和python3.x
3.如何实现python解释器多版本共存?
下载安装两个版本的python解释器->找到各自的目录将里面的python.
exe,将其复制粘贴复件重命名为python2和3->打开计算机高级属性
中的环境变量-->添加系统环境变量->将python两个版本的各自根目
录路径复制进环境变量中
三.python程序的运行方式
1 python的两种运行方式
(1):在终端解释器中写程序运行(交互式模式)
优点:方便调试
缺点:无法永久保存,不适合开发
(2):将代码写到文件中,再调用文件路径运行
优点:永久保存,适合开发
缺点:调试稍微麻烦
2 python代码运行过程
启动python解释器-->将文件中的代码读入内存-->解释执行
四.变量
1.定义
变量是一种可以反映状态变化的机制
2.变量的存在意义
程序的执行本质就是一系列变化
3.定义变量的注意事项
(1)首字母不能是数字
(2)只能由数字、下划线、英文字母构成
(3)不能与关键字一样,容易混淆
4.规范书写
为了使长串代码更加容易阅读理解,采用驼峰体或者下划线式
5.变量的三个特征
id:地址
type:数据类型
value:值
代码演示
x = 'SongXueXiang'
print(id(x), type(x), x)
运行结果
2344171221488 <class 'str'> SongXueXiang
6.“=”与“is”的区别:
“=”比较的是值
代码演示
>>> x='name:alex,age:73'
>>> x='name:alex,age:73'
>>> id(s1)
2506534695408
>>> id(s2)
2166679483056
>>>
>>> s1 is s2
False
>>> s1 == s2
True
“is”比较的是id
代码演示
>>> x=1
>>> y=x
>>>
>>>
>>> id(x)
1767599584
>>> id(y)
1767599584
>>> x == y
True
>>> x is y
True
7.常量
定义:不变的量(例如π)
五.数据类型
1.分类:
数字类型、字符串类型、列表、字典、布尔类型
2.数字类型:
int整型(用于整数),float浮点
3.两种数字类型的区别:
int和float类型只能存一个值,不可变(值变,id就变)
4.字符串类型:
在python中,加了引号的字符就是字符串类型,python并没有字符类型
(1)字符串相加相乘:
代码演示
x = "杨"
y = "宋"
print(x+y)
print(x*10)
#代码运行结果
杨宋
杨杨杨杨杨杨杨杨杨杨
(2)字符串类型方法运用
1) 移除name变量对应的值两边的空格, 并输出处理结果处理方法.strip()去空值
name = " aleX".strip()
print(name)
2) 判断name变量对应的值是否以"al"开头, 并输出结果处理方法.startswith()方法判断开头
name = "aleX"
name.startswith('al')
print(name.startswith('al'))
3) 判断name变量对应的值是否以"X"结尾, 并输出结果
处理方法.endswith()方法判断开头
name = "aleX"
name.endswith('X')
print(name.endswith('X'))
4) 将name变量对应的值中的 “l” 替换为 “p”, 并输出结果处理方法.replace()方法替换
name = "aleX"
print(name.replace('l','p'))
5) 将name变量对应的值根据 “l” 分割, 并输出结果。处理方法.split()
name = "aleX"
print(name.split('l'))
6) 将name变量对应的值变大写, 并输出结果 处理方法.upper()
name = "aleX"
print(name.upper())
7) 将name变量对应的值变小写, 并输出结果
处理方法.lower()
name = "aleX"
print(name.lower())
8) 请输出name变量对应的值的第2个字符?处理方法:索引取值
name = "aleX"
print(name[1])
9) 请输出name变量对应的值的前3个字符?处理方法:切片
name = "aleX"
print(name[0:3:1])
10)请输出name变量对应的值的后2个字符? 处理方法:切片
正向切片name = "aleX"
print(name[2:4:1])
反向切片 name=' aleX'
print(name[-2:])
11)请输出name变量对应的值中 “e” 所在索引位置?
处理方法.index()
name = "aleX"
print(name.index('e'))
12)获取子序列, 去掉最后一个字符。如: oldboy则获取oldbo。
name = "aleX"
a=name[:-1]
print(a)
13)字符串循环打印
1.
name='sxx'
i=0
while i < len(name):
print(name[i])
i+=1
2.
name='sxx'
for i in name:
print(i)
5.列表:
(1)定义:
[ ]内可以有多个值,类型随意,逗号分隔,可变,有序
示例
songxuexiang=['sxx','eat',16]
(2)列表的增删改查
1)索引取值
n=[1,2,3,4]
print(n[1])
2).列表的切片
x=['aa','bb','cc','dd']
print(x[1:2])
4).列表的长度
x=['aa','bb','cc','dd']
print(len(x))
5).成员运算in和not in
x=['aa','bb','cc','dd']
print('aa' in x)
6).列表的追加
x=['aa','bb','cc','dd']
x.append['ee']
print(x)
7)列表内删除
1.
x=['aa','bb','cc','dd']
del x[1]
print[x]
2.
x.remove(aa) 单纯的删除
print(x)
3
x.pop() 默认是从末尾删,值违背删去,被取走,通过x.pop可以调用
x.pop(0)
print(x)
8)列表循环
x=['aa','bb','cc','dd']
i=0
while i<len(x)
print(x[i])
i+=1
for i in range(len(x)):
print(i,x[i])
列表格式练习
题:
students = [
{'name': 'sxx', 'age': 18, 'sex': 'male'},
{'name': 'lxx', 'age': 38, 'sex': 'fmale'},
{'name': 'hxx', 'age': 48, 'sex': 'male'},
{'name': 'qxx', 'age': 58, 'sex': 'fmale'},
{'name': 'liwenzhou', 'age': 68, 'sex': 'male'}, ]
要求循环打印所有学生的详细信息,格式如下
< name: egon age: 18 sex: male >
< name: alex age: 38 sex: fmale >
< name: wxx age: 48 sex: male >
< name: yuanhao age: 58 sex: fmale >
< name: liwenzhou age: 68sex: male >
解:
n = 0
while True:
if n < 5:
name=students[n]['name']
age=students[n]['age']
sex=students[n]['sex']
print('<name:%s,age:%s,sex:%s>'%(name,age,sex))
else:
break
n += 1
6.元组
(1)定义:
( )内可以有多个值,类型随意,逗号分隔,相当于不可变的列表,有序
x=('a','b','c')
1)按索引取值(正向取+反向取):
x=('aa','bb','cc','dd')
print(n[1])
2):元组的切片
x=('aa','bb','cc','dd')
print(x[1:2])
3):元组的长度
x=('aa','bb','cc','dd')
print(len(x))
4):元组的循环
x=('aa','bb','cc','dd')
i=0
while i<len(x)
print(x[i])
i+=1
for i in range(len(x)):
print(i,x[i])
5)查询位置
x=('aa','bb','cc','dd')
print(t.index('aa'))
6)查询元素个数
x=('aa','bb','cc','dd')
print(t.count('x'))
7.字典
(1)定义:
{ }内可以有多个值,类型随意,逗号分隔,无序,不可变
dic={'name':'sxx','age':18}
1)按key存取值:可存可取
dic={'name':'sxx'}
dic['age']=10
print(dic)
2)改大小写.upper()方法和.lower()方法
x={'name':'sxx'}
dic['name']=dic['name'].upper()
3)长度运算
dic={'name':'sxx','age':18}
print(len(dic))
4)字典内元素删除
dic={'name':'sxx','age':18}
del dic['name']
print(dic)
dic={'name':'sxx','age':18}
res=dic.pop('name')
print(res)
5)字典取值不确定key时,避免错误
dic={'name':'sxx','age':18}
print(dic.get('namexxxxxxxxxxx'))
6)字典更新
dic={'name':'sxx','age':18}
dic.update({'x':1,'age':19})
print(dic)
对与老字典来说,更新指的是,新字典中有而老字典中没有则添加,
新有而老有,则覆盖
7)字典创建
1.
good_info={
'name':None,
'price':None,
'count':None
}
2.
print({}.fromkeys(['name','age','sex'],None))
8)字典setdefaul方法
dic={'name':'sxx','age':18}
res=dic.setdefault('name',SXX')
print('返回值',res)
print(dic)
字典有中有key,则不修改,返回原key对应的原值
没有对应的key,则添加,返回添加的key对应的value
9.集合
(1).定义:
{ }内以,分隔开的元素,可村多个值,不可变,无序
(2):常用操作
1)去重
s1=set('hello')
print(s1)
2)关系运算
stus1={'sxx','yb','张全蛋','李铁蛋','wer'}
stus2={'李二丫','wxx','liudehua','sxx','yb'}
既是stuws1里的又是stus2里的的学生:交集
print(stus1& stus2)
print(stus1.intersection(stus2))
所有的学生:并集
print(stus1| stus2)
print(stus1.union(stus2))
只是stus1里的,不在stus2里的:差集
print(stus1-stus2)
print(stus1.difference(stus2))
没有同时在stus1和stus2的学生姓名:交叉补集
print(stus1^stus2)
print(stus1.symmetric_difference(stus2))
10.单引号、双引号、多引号的区别
引号运用方法:
字符串类型如果有单引号则外面套双引号,
反之双套单三引号一般用于多行字符串
代码演示
x='''
我有一头小毛炉啊,
我从来也不骑,
有一天我心血来潮骑着它去赶集
'''
print('x')
11.布尔类型重点:
1、None,0,空(空字符串,空列表,空字典等)三种情况下
布尔值为False
2、其余均为真
12.%s和%d的区别:
%s:能接收字符串和数字
%d:只能接收数字
x=[aa,bb,cc,dd] print('一:%s;二%s'%(x[1]),x[2])
x=[aa,bb,cc,dd]
print('一:%d;二%d'%(x[1]),x[2])##这是为了说明%d只能接
##收数字,运行会报错
6:基本运算符
算数运算符
比较运算符
赋值运算符
逻辑运算符
7.if.....else语句
含义:如果.....那么
1.用户登录验证
user_name = 'seven'
user_password = '123'
inp_name = input('请输入用户名:')
inp_password = input('请输入用户密码:')
if user_name == inp_name and user_password==inp_password:
print('登陆成功')
else:
print('用户名错误')
8.while循环
用户验证错误三次锁定
user_name = 'seven'
user_password = '123'
n = 0
while True:
if n < 3:
inp_name = input('请输入用户名:')
inp_password = input('请输入用户密码:')
if user_name == inp_name:
print('登陆成功')
else:
print('用户名错误')
n += 1
else:
print('尝试次数过多,锁定')
break
print('尝试次数:', n)
循环嵌套
name='sxx'
password='123'
tag=True
while tag:
inp_name=input('用户名: ')
inp_pwd=input('密码: ')
if inp_name == name and inp_pwd == password:
while tag:
cmd=input('>>: ')
if not cmd:continue
if cmd == 'quit':
tag=false
break
print('run <%s>' %cmd)
else:
print('用户名或密码错误')
continue
break
简单的购物小程序
msg='''
1.注册
2.登录
3.退出
'''
sp='''
编号 商品 价格
1 mac 20000
2 lenovo 10000
3 apple 200
4 tesla 100000
'''
goods = [
{'name': 'mac', 'price': 20000},
{'name': 'lenovo', 'price': 10000},
{'name': 'apple', 'price': 200},
{'name': 'tesla', 'price': 100000},
]
m=[]
h={}
n=1
tag=True
print('欢迎进入商城')
while tag:
print(msg)
with open('b', mode='r', encoding='utf-8') as f:
for line in f:
l=line.split(',')
h.setdefault(l[0])
h[l[0]]=l[3]
inp_xx=input('注册请输入1,登录请输入2,退出请按3:').strip()
if inp_xx=='1':
print('欢迎新用户')
inp_name = input('输入姓名').strip()
if inp_name in h:
print('存在该用户,请重新注册或登陆')
continue
else:
inp_sex = input('输入性别').strip()
inp_age = input('输入年龄').strip()
inp_password=input('请输入下次登录密码').strip()
with open(r'b', mode='at', encoding='utf-8') as f:
f.write('\n%s,%s,%s,%s,0' % (inp_name,inp_sex,inp_age,inp_password))
print('注册成功,')
print('用户信息(姓名:%s,性别:%s,年龄:%s,密码:%s)' % (inp_name,inp_sex,inp_age,inp_password))
continue
elif inp_xx=='2':
while tag:
inp_name = input('输入用户名:').strip()
inp_password = input('输入密码:').strip()
if inp_name in h and inp_password == h[inp_name]:
print(sp)
salary = input("请输入你的金额").strip()
i = input('请输入商品编号').strip()
while tag:
salary = int(salary)
if i in ['1','2','3','4']:
i = int(i) - 1
name = goods[i]['name']
price = int(goods[i]['price'])
while tag:
if price <= salary:
m.append(name)
salary -= price
cmd = input('购买成功,退出请输入quit,继续浏览请回复随意字符:')
if cmd == 'quit':
print('你购买的商品为%s,你的余额为%s' % (m, salary))
tag = False
else:
print(sp)
i=input('还要买什么,请输入编号')
break
else:
print('你的余额不够')
cz = input("充值")
cz = int(cz)
salary += cz
print("用户名:%s;余额:%s" % (inp_name, salary))
continue
else:
print("请输入编号")
elif n < 3:
print('用户名、密码错误')
print('尝试次数', n)
n += 1
else:
print('尝试次数过多')
break
elif inp_xx=='3':
print("谢谢惠顾")
break
else :
print("请输入1,2或3")
continue