1.数字

(1)整形int:表示年纪,等级,手机号等

eg:age=10==>age=int(10)

(2)浮点型float:表示身高,体重,薪水等

eg:salary=100000.7==>salary=float(100000.7)

(3)二进制,十进制,八进制,十六进制

2.字符串

(1)长整形(了解)

在python2中(python3中没有长整形的概念)

eg:

>>>num=2L

>>>type(num)

<type 'long'>

(2)复数(了解)

eg:

>>>x=3+4j

>>>x.real

3.0

>>>x.imag

4.0

 

2.字符串:表示名字,性别,国籍等描述,在单引号/双引号/三引号内,由一串字符组成

(1)安索引取值(正向取值+反向取值):只能取

(2)切片(顾头不顾尾,步长)

(3)长度len

(4)成员运算in和not in

(5)移除空白strip

(6)切分split

(7)循环

 

练习:

#练习1:移除name变量对应的值两边的空格,并输出处理的结果
name=' Heling '
a=name.strip()
print('练习1==》',a)

#练习2:判断name变量对应的值是否以“ He”开头,并输出结果
if name.startswith(' He'):
print('练习2==》',name)
else:
print('wrong')

#练习3:判断name变量对应的值是否以"g"结尾,并输出结果
print('练习3==》',name.endswith('g '))

#练习4:将name变量对应的值中的'l'替换成'L',并输出结果
print('练习4==》',name.replace('l','L'))

#练习5:将name变量对应的值根据'l'分割,并输出结果
print('练习5==》',name.split('l'))

#练习6:将name 变量对应的值变大写,并输出结果
print('练习6==》',name.upper())

#练习7:将name变量对应的值变小写,并输出结果
print('练习7==》',name.lower())

#练习8:输出name变量对应的值的后两个字符
print('练习8==》',name[-2: ])

#练习9:输出name变量对应的值中'e'所在位置的索引
print('练习9==》',name.index('e'))

#练习10:请输出name对应值得前三个字符
print('练习10==》',name[ :3])

#练习11:请输出name对应值的第2个字符
print('练习11==》',name[1])

#练习12:获取子序列,去掉最后一个字符
print('练习12==》',name[:-1])

answer:
练习1==》 Heling
练习2==》  Heling
练习3==》 True
练习4==》  HeLing
练习5==》 [' He', 'ing ']
练习6==》  HELING
练习7==》  heling
练习8==》 g
练习9==》 2
练习10==》  He
练习11==》 H
练习12==》  Heling

3.列表:表多个,如多个装备,多门课程,多个爱好,多个属性等,表示为[],内部可包含多个任意类型的值,用逗号分隔

eg:my_hobbies=['chifan','shuijiao','dadoudou']==>本质上为my_hobbies=list['chifan','shuijiao','dadoudou']

 

(1)按索引存取(正向取值,反向取值)

(2)切片

(3)长度

(4)成员运算in 和not in

(5)追加

(6)删除

(7)其他操作

 

练习:

#练习1:有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变
L=['heling',24,[1993,3,18]]
name=L[0]
age=L[1]
birthday=L[2]
print('练习1==》''name=',name,'/','age=',age,'/','birthday=',birthday)
print('分界'.center(50,'='))

#练习2:用列表模拟队列(先进先出:append和pop)
data=[]
data.append('吃饭')
print('练习2==》',data)
data.append('睡觉')
print('练习2==》',data)
data.append('打豆豆')
print('练习2==》',data)
data.pop(0)
print('练习2==》',data)
data.pop(0)
print('练习2==》',data)
data.pop(0)
print('练习2==》',data)
print('分界'.ljust(50,'='))

#练习3:用列表模拟堆栈(先进后出)
data.append('吃饭')
print('练习3==》',data)
data.append('睡觉')
print('练习3==》',data)
data.append('打豆豆')
print('练习3==》',data)
data.pop(-1)
print('练习3==》',data)
data.pop(-1)
print('练习3==》',data)
data.pop(-1)
print('练习3==》',data)
print('分界'.rjust(50,'='))

#练习4:有如下列表,请按照年龄排序(涉及到匿名函数)
l=[{'name':'alex','age':84},{'name':'oldboy','age':73},{'name':'egon','age':18}]
l.sort(key=lambda item:item['age'])
print(l)

answer:
练习1==》name= heling / age= 24 / birthday= [1993, 3, 18]
========================分界========================
练习2==》 ['吃饭']
练习2==》 ['吃饭', '睡觉']
练习2==》 ['吃饭', '睡觉', '打豆豆']
练习2==》 ['睡觉', '打豆豆']
练习2==》 ['打豆豆']
练习2==》 []
分界================================================
练习3==》 ['吃饭']
练习3==》 ['吃饭', '睡觉']
练习3==》 ['吃饭', '睡觉', '打豆豆']
练习3==》 ['吃饭', '睡觉']
练习3==》 ['吃饭']
练习3==》 []
================================================分界
[{'name': 'egon', 'age': 18}, {'name': 'oldboy', 'age': 73}, {'name': 'alex', 'age': 84}]

 

4.元组:存多个值,对比列表来说,元组不可变(可以当作字典的key),主要用来读,定义为:与列表类型相比,把[]变成了()

eg:

age=(1,2,3,4,5,6)==>本质为age=tuple(1,2,3,4,5,6)

 

(1)按索引取值

(2)切片

(3)长度

(4)成员运算in 和not in

(5)循环

 

练习:

#练习1:简单购物车,要求如下:
#实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入 
msg_dic={'apple':10,'tesla':100000,'mac':3000,'lenovo':30000,'chicken':10,}
print('shopping list')
shopping_list = []
while True:
goods = input('please input the good: ')
amount = input('How many you wanna buy: ')
if goods not in msg_dic:
print('Not exist')
continue
else:
if not amount.isdigit():
print('请输入正确的数量')
continue
else:
shopping_list.append((goods, msg_dic[goods], amount))
print(shopping_list)


answer:
shopping list
please input the good: qpple
How many you wanna buy: q
Not exist
please input the good: apple
How many you wanna buy: 2
[('apple', 10, '2')]
please input the good: mac
How many you wanna buy: 3
[('apple', 10, '2'), ('mac', 3000, '3')]
please input the good:


5.字典:存多个值,key-value存取,取值速度快,定义为:key必须是不可变类型,value可以是任意类型
eg:
info={'name':Heling,'age':24,'sex':'Female'}==>本质为:info=dict({...})或info=dict(name='heling'
age=24,sex='Female')或info=dict([('name','Heling'),('age',24)])或{}.fromkeys(('name','age','sex'),None)

(1)按key 存取值:可存可取
(2)长度len
(3)成员运算in 和not in
(4)删除
(5)键keys,值values,键值对items()
(6)循环

练习:
#有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
#即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
list=[11,22,33,44,55,66,77,88,99,90]
list1 = []
list2 = []
dict={'k1':list1,'k2':list2}
for i in list:
if i>66:
list1.append(i)
else:
list2.append(i)
print('练习1==》',dict)
print('分界'.center(50,'='))

#统计s='hello alex alex say hello sb sb'中每个单词的个数
s='hello alex alex say hello sb sb'
l=s.split()
dict1={}
for t in l:
dict1[t]=l.count(t)
print('练习2==》',dict1)

answer:
练习1==》 {'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55, 66]}
========================分界========================
练习2==》 {'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

6.集合:去重,关系运算,定义为:可以包含多个元素,用逗号隔开,每个元素必须是不可变类型(可hash类型,可作为字典的key),集合中没有重复的元素,且集合中的元素是无序的
(1)长度len
(2)成员运算in 和not in
(3) 合集|,交集&,差集-,对称差集^,==,>,>=,<,<=,父集,子集

练习:
#练习1:关系运算
#有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
#pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
#linuxs={'wupeiqi','oldboy','gangdan'}
#1. 求出即报名python又报名linux课程的学员名字集合
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
print('练习1.1==》',pythons&linuxs)
print('分界'.center(50,'='))
#2. 求出所有报名的学生名字集合
print('练习1.2==》',pythons|linuxs)
print('分界'.center(50,'='))
#3. 求出只报名python课程的学员名字
print('练习1.3==》',pythons-linuxs)
print('分界'.center(50,'='))
#4. 求出没有同时这两门课程的学员名字集合
print('练习1.4==》',pythons^linuxs)
print('分界'.center(50,'='))

#二.去重
# 1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
l=['a','b',1,'a','a']
print('练习2.1==>',set(l))
print('分界'.center(50,'='))
# 2.在上题的基础上,保存列表原来的顺序
L=[]
for i in l:
if i not in L:
L.append(i)
print('练习2.2==>',L)
print('分界'.center(50,'='))
# 3.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
l1=[{'name':'egon','age':18,'sex':'male'},{'name':'alex','age':73,'sex':'male'},{'name':'egon','age':20,'sex':'female'},
{'name':'egon','age':18,'sex':'male'},{'name':'egon','age':18,'sex':'male'},]
L1=[]
for t in l1:
if t not in L1:
L1.append(t)
print('练习2.3==>',L1)
print('分界'.center(50,'='))

answer:
练习1.1==》 {'wupeiqi', 'gangdan'}
========================分界========================
练习1.2==》 {'oldboy', 'wupeiqi', 'gangdan', 'yuanhao', 'alex', 'biubiu', 'egon'}
========================分界========================
练习1.3==》 {'alex', 'biubiu', 'yuanhao', 'egon'}
========================分界========================
练习1.4==》 {'yuanhao', 'oldboy', 'alex', 'biubiu', 'egon'}
========================分界========================
练习2.1==> {'a', 1, 'b'}
========================分界========================
练习2.2==> ['a', 'b', 1]
========================分界========================
练习2.3==> [{'name': 'egon', 'age': 18, 'sex': 'male'}, {'name': 'alex', 'age': 73, 'sex': 'male'}, {'name': 'egon', 'age': 20, 'sex': 'female'}]
========================分界========================

7.运算符:
身份运算(is,is not)
is 比较的是id,==比较的是值,id若相同,值必定相同,值相同,id 不一定相同

#练习1:
x=1
y=1
print('练习1==》',end='')
print(x==y,end=' ')
print(id(x),id(y),end=' ')
print(x is y)

answer:
练习1==》True    1769583680 1769583680   True


作业1:打印省、市、县三级菜单 可返回上一级 可随时退出程序
Province={'贵州省':{'贵阳市':['云岩区','南明区','花溪区','乌当区','白云区','小河','金阳新区','修文','开阳','息烽','清镇'],
'遵义市':['红花岗区','汇川区','新浦区','仁怀市','赤水市','绥阳县','湄潭县','凤冈县','桐梓县','正安县','道真县','务川县','习水县','余庆县','遵义县'],
'安顺市':['西秀区','平坝区','普定县','镇宁县','关岭县','紫云县','安顺经济开发区','黄果树风景名胜区'],
'毕节市':['七星关区','大方县','黔西县','金沙县','织金县','纳雍县','威宁县','赫章县'],
'兴义市':['兴仁县','普安县','晴隆县','安龙县','贞丰县','册亨县','望谟县'],
'都匀市':['福泉市','独山县','平塘县','荔波县','三都县','长顺县','惠水县','瓮安县','贵定县','龙里县'],
'六盘水市':['水城','盘县','六枝特区'],
'铜仁市':['万山特区','思南县','石阡县','德江县','江口县','玉屏县','送松桃县','沿河县','印江县'],
'凯里市':['麻江县','丹寨县','雷山县','台江县','黄平县','凯里经济开发区','炉碧经济开发区','金钟经济开发区','台江经济开发区']},'云南省':{},'四川省':{},'广东省':{}}
print('贵州省','四川省','云南省','广东省')
while True:
P = input('==>>')
if P not in Province:
print('not exsit')
back4 = input('input b to go back or q to quit or go on:')
if back4 == 'b':
print('not exsit')
continue
elif back4 == 'q':
exit()
else:
continue
else:
print(P, Province[P].keys())
back3=input('input b to go back or q to quit or go on:')
if back3=='b':
print('没有上一层')
continue
elif back3=='q':
exit()
else:
S = input('==>>')
while True:
if S not in Province[P].keys():
# print('not exsit')
back2 = input('input b to go back or q to quit or go on:')
if back2 == 'b':
print(P,Province[P].keys())
break
elif back2=='q':
exit()
else:
continue
else:
print(Province[P][S])
back2 = input('input b to go back or q to quit or go on:')
if back2 == 'b':
print(P,':',Province[P].keys())
break
elif back2 == 'q':
exit()
else:
C = input('==>>')
while True:
if C not in Province[P][S]:
print('not exsit')
continue
else:
back = input('input b to go back or q to quit or go on:')
if back == 'b':
print(S)
back5 = input('input b to go back or q to quit or go on:')
if back5 == 'b':
print(P)
break
elif back5 == 'q':
exit()
elif back=='q':
exit()
else:
break
break

流程图

 



作业2:用户名和密码存放于文件中,格式为:egon|egon123 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额
username='Heling'
password='kaixin'
msg_dic = {'apple': 10, 'tesla': 100000, 'mac': 3000, 'lenovo': 30000, 'chicken': 10, }
count = 0
while count<3:
U = input('please input your username: ')
P = input('please input your password: ')
if U==username and P==password:
while True:
S=input('login successfully,please input your salary:')
if not S.isdigit():
print('input error')
continue
else:
for i in msg_dic:
goods_list=[]
goods_list.append((i,msg_dic[i]))
print(goods_list)
shopping_car = []
price = 0
balance = 5000
while True:
print('shopping list'.center(30, '='))
goods=input('please input goods:')
amount=input('please input amount: ')
if goods not in msg_dic:
print('not exsit')
back=input('input Q to quit or others to continue:')
if back=='Q':
print(shopping_car,'balance=',balance)
exit()
else:
plus_price = float(msg_dic[goods]) * int(amount)
shopping_car.append((goods,amount,plus_price))
print(shopping_car)
price=price+plus_price
balance=balance-price
if balance<0:
print('余额不足')
back1 = input('input Q to quit or others to continue:')
if back1 == 'Q':
print(shopping_car,'balance=',balance)
exit()
else:
back2 = input('input Q to quit or others to continue:')
if back2 == 'Q':
print(shopping_car,'balance=',balance)
exit()
else:
print('username nor password error,please input again')
count += 1
print('forget your info')

流程图