python_DAY02
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_DAY02相关的知识,希望对你有一定的参考价值。
一 数字
1、整型int
作用:年纪,等级,身份证号,qq号等整型数字相关
定义:
age = 10 #本质 age = int(10)
2、浮点型float
作用:薪资、身高、体重、体质参数等浮点数相关
salary = 11.2 #本质 salary =float(11.2)
二 字符串‘‘
作用:名字、性别、国籍、地址等描述信息
定义:在单引号/双引号/三引号内,由一串字符组成
例子:name = ‘Jose’
1、索引取值(正反取值)
#!/usr/bin/env python
#coding:utf-8
name=‘Jose‘
print(name) #打印出名称
print(name[0]) #正向取第一个字母
print(name[-2])#反向去倒数第二个字母
#运行结果如下
2、切片(顾头不顾尾,步长)
name=‘Jose‘
print(name[0:2])#切出前两位
print(name[1:2])#切出第二位
print(name[0:3:1]) #1表示步长
print(name[0:3:2])#2表示步长
#运行结果如下
Ps:切片股头不顾尾。
3、长度len
#len长度
msg=‘my name is Jose‘
print(len(msg))
#运行结果如下
Ps:数字没有长度,字符串有,len统计字符串的个数
4、成员运算in和not in
#in 和 not in
msg = ‘hello Jose‘
print(‘Jose‘ in msg)
print(‘dxc‘ in msg)
print(‘o‘ in msg)
#运行结果如下
5、移除空白strip
#移除空白strip
password=‘alex123 ‘
print(password.strip())
#运行结果如下
Ps:strip移除,默认是空格
6、切分split
#切分split
user_info=‘nginx:x:1012:1012::/home/nginx:/sbin/nologin‘
print(user_info.split(‘:‘)) #以冒号为分隔符进行切分
print(user_info.split(‘:‘)[0])#以冒号为分隔符进行切分,并取出第一个值
print(user_info.split(‘:‘,2))#以冒号为分隔符进行切分,2表示切两次
#运行结果如下
Ps:切分要与切片记住,切分是split定义分隔符
7、循环
三 列表[]
作用:多个装备,多个爱好,多门课程等
定义:[ ]可以有多个任意类型的键值,逗号分隔
例子:my_friends=[‘alex‘,‘engo‘,‘oldboy‘,4,5]
#本质my_friends=list([….])
#优先掌握的操作:
按索引存取值(正向存取+反向存取):即可存也可以取
切片(顾头不顾尾,步长)
长度
成员运算in和not in
追加
删除
循环
四 元组()
作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
定义:与列表类型比,只不过[]换成()
age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55))
#优先掌握的操作:
按索引取值(正向取+反向取):只能取
切片(顾头不顾尾,步长)
长度
成员运算in和not in
五 字典{}
作用:存多个值,key-value存取,取值速度快
定义:key必须是不可变类型,value可以是任意类型
info={‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘}#本质info=dict({....})
或
info=dict(name=‘egon‘,age=18,sex=‘male‘)
或
info=dict([[‘name‘,‘egon‘],(‘age‘,18)])
或
{}.fromkeys((‘name‘,‘age‘,‘sex‘),None)
#优先掌握的操作:
按key存取值:可存可取
长度len
成员运算in和not in
删除
键keys(),值values(),键值对items()
循环
六 集合
作用:去重,关系运算
定义集合: 可以包含多个元素,用逗号分割
集合的元素遵循三个原则:
1:每个元素必须是不可变类型(可hash,可作为字典的key)
2:没有重复的元素
3:无序
注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
#优先掌握的操作:
长度len
成员运算in和not in
|合集
&交集
-差集
^对称差集
==
>,>= ,<,<= 父集,子集
待练习…….
后面的待总结
七 数据类型总结
按存储空间的占用分(从低到高)
数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删
八 运算符
http://www.cnblogs.com/linhaifeng/articles/5935801.html#_label34
九 字符编码
http://www.cnblogs.com/linhaifeng/articles/5950339.html
十 文件处理
http://www.cnblogs.com/linhaifeng/articles/5984922.html
十一 课后练习
第一题
# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
name = " aleX"
# 1) 移除 name 变量对应的值两边的空格,并输出处理结果
答题思路:移除用strip,答案如下
name =‘ aleX‘
print(name)
print(name.strip())
#运行结果如下
# 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
答题思路:判断值的开头用startswith
name =‘ aleX‘
print(name.startswith(‘al‘))
# 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
答题思路:判断值的结尾用endswith
name =‘ aleX‘
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 变量对应的值变小写,并输出结果
答题思路:变小写用capitalize
name =‘ aleX‘
print(name.capitalize())
#运行结果如下
# 8) 请输出 name 变量对应的值的第 2 个字符?
name =‘ aleX‘
print(name[1])
#运行结果如下,第二个字符是空格
# 9) 请输出 name 变量对应的值的前 3 个字符?
name =‘ aleX‘
print(name[0:3])
#运行结果如下
# 10) 请输出 name 变量对应的值的后 2 个字符?
name =‘ aleX‘
print(name[-2:])
#运行结果如下
# 11) 请输出 name 变量对应的值中 “e” 所在索引位置?
name =‘ aleX‘
print(name.index(‘e‘))
#运行结果如下
# 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo.
name =‘ aleX‘
a=name[:-1]
print(a)
#运行结果如下
第二题
1. 有列表data=[‘alex‘,49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
data=[‘alex‘,49,[1900,3,18]]
name=data[0]
age=data[1]
bir=data[2]
print(name)
print(age)
print(bir)
#运行结果
2. 用列表模拟队列 先进先出
#append() 方法用于在列表末尾添加新的对像
l1=[]
l1.append(‘first‘)
l1.append(‘second‘)
l1.append(‘third‘)
print(l1)
print(l1.pop(0))
print(l1.pop(0))
print(l1.pop(0))
执行结果如下
3. 用列表模拟堆栈先进后出
#insert() 函数用于将指定对象插入列表的指定位置
l1=[]
l1.insert(0,‘first‘)
l1.insert(0,‘second‘)
l1.insert(0,‘third‘)
print(l1)
print(l1.pop(0))
print(l1.pop(0))
print(l1.pop(0))
执行结果如下
4. 有如下列表,请按照年龄排序(涉及到匿名函数)
l=[
{‘name‘:‘alex‘,‘age‘:84},
{‘name‘:‘oldboy‘,‘age‘:73},
{‘name‘:‘egon‘,‘age‘:18},
]
答案:
l.sort(key=lambda item:item[‘age‘])
print(l)
第三题
#简单购物车,要求如下:
实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入
#!/usr/bin/env python
#coding:utf-8
#定义一个字典
msg_dic={
‘apple‘:10,
‘tesla‘:100000,
‘mac‘:3000,
‘lenovo‘:30000,
‘chicken‘:10,
}
shopping_list = [] #商品列表
while True: #循环使用
for key in msg_dic:
print(key,msg_dic[key])
choice = input(‘请输入你想要的商品>>:‘).strip()
if choicenot in msg_dic: #判断,你输入的内容是否存在
print(‘该商品不存在。。。‘)
continue #跳出本次循环
count = input(‘请输入你想要的个数>>:‘).strip()
if not count.isdigit(): #判断,你输入的是否是整数
print(‘<<<<<<<<<请输入整数>>>>>>>>>‘)
continue #跳出本次循环
shopping_list.append((choice,msg_dic[choice],int(count))) #添加选购的商品及个数
print(shopping_list) #打印选购的商品及个数
#运行结果如下
第四题
1 有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
即: {‘k1‘: 大于66的所有值, ‘k2‘: 小于66的所有值}
#!/usr/bin/env python
#coding:utf-8
a={‘k1‘:[],‘k2‘:[]}
b=[11,22,33,44,55,66,77,88]
for i in b:
if i< 66:
a[‘k1‘].append(i)
else:
a[‘k2‘].append(i)
print(a)
第五题
统计s=‘hello alex alex say hello sb sb‘中每个单词的个数
结果如:{‘hello‘: 2, ‘alex‘: 2, ‘say‘: 1, ‘sb‘: 2}
方法一:
#!/usr/bin/env python
#coding:utf-8
s=‘hello alex alex sayhello sb sb‘
l=s.split()
dic={}
for item in l:
if itemin dic:
dic[item]+=1
else:
dic[item]=1
print(dic)
方法二:
#!/usr/bin/env python
#coding:utf-8
s=‘hello alex alex sayhello sb sb‘
dic={}
words=s.split()
print(words)
for word in words:#word=‘alex‘
dic[word]=s.count(word)
print(dic)
十一 课后作业
要求:写出一个三级菜单
思路逻辑如下:
F:\python19\Scripts\python.exeF:/untitled/19/day02/三级菜单.py
北京
上海
山东
请输入要选择的城市>>北京
海淀
昌平
朝阳
东城
请输入要选择的城区>>昌平
沙河
天通苑
回龙观
请输入要选择的站口>>沙河
老男孩
北航
最后一层,按b返回>>b
沙河
天通苑
回龙观
请输入要选择的站口>>b
海淀
昌平
朝阳
东城
请输入要选择的城区>>
北京
上海
山东
请输入要选择的城市>>
#!/usr/bin/env python
#coding:utf-8
menu = {
‘北京‘:{
‘海淀‘:{
‘五道口‘:{
‘soho‘:{},
‘网易‘:{},
‘google‘:{}
},
‘中关村‘:{
‘爱奇艺‘:{},
‘汽车之家‘:{},
‘youku‘:{},
},
‘上地‘:{
‘百度‘:{},
},
},
‘昌平‘:{
‘沙河‘:{
‘老男孩‘:{},
‘北航‘:{},
},
‘天通苑‘:{},
‘回龙观‘:{},
},
‘朝阳‘:{},
‘东城‘:{},
},
‘上海‘:{
‘闵行‘:{
"人民广场":{
‘炸鸡店‘:{}
}
},
‘闸北‘:{
‘火车战‘:{
‘携程‘:{}
}
},
‘浦东‘:{},
},
‘山东‘:{},
}
while True:
for i in menu:
print(i)
choice = input(‘请输入要选择的城市>>‘)
if choicein menu:
while True:
for i2 in menu[choice]:
print(i2)
choice2 = input(‘请输入要选择的城区>>‘)
if choice2in menu[choice]:
while True:
for i3 in menu[choice][choice2]:
print(i3)
choice3 = input(‘请输入要选择的站口>>‘)
if choice3 in menu[choice][choice2]:
while True:
for i4 in menu[choice][choice2][choice3]:
print(i4)
choice4 = input(‘最后一层,按b返回>>‘)
if choice4 == ‘b‘:
break
if choice3 == ‘b‘:
break
if choice2== ‘b‘:
break
第七题 购物车
待完善。。。。。。。。。
思路:
F:\python19\Scripts\python.exeF:/untitled/19/day02/购物车.py
apple 10
tesla 100000
mac 3000
lenovo 30000
chicken 10
请输入你想要的商品>>:apple
请输入你想要的个数>>:10
[(‘apple‘, 10, 10)]
apple 10
tesla 100000
mac 3000
lenovo 30000
chicken 10
#!/usr/bin/env python
#coding:utf-8
#定义一个字典
msg_dic={
‘apple‘:10,
‘tesla‘:100000,
‘mac‘:3000,
‘lenovo‘:30000,
‘chicken‘:10,
}
shopping_list = [] #商品列表
while True: #循环使用
for key in msg_dic:
print(key,msg_dic[key])
choice = input(‘请输入你想要的商品>>:‘).strip()
if choicenot in msg_dic: #判断,你输入的内容是否存在
print(‘该商品不存在。。。‘)
continue #跳出本次循环
count = input(‘请输入你想要的个数>>:‘).strip()
if not count.isdigit(): #判断,你输入的是否是整数
print(‘<<<<<<<<<请输入整数>>>>>>>>>‘)
continue #跳出本次循环
shopping_list.append((choice,msg_dic[choice],int(count))) #添加选购的商品及个数
print(shopping_list) #打印选购的商品及个数
以上是关于python_DAY02的主要内容,如果未能解决你的问题,请参考以下文章