练习一
1,执行Python脚本的两种方式
a,Python解释器 b,Python 1.py
2,简述位和字节的关系
一个字节等于8位
3,简述ascii,unicode,utf-8,gbk的关系
最开始ascii,表示信息有限。后来发明unicode给全球的字符编码,再后来为了节约信息位采用了压缩形式utf-8,gbk是使用两个字节的汉字专用编码
4,请写出“李杰”分别用utf-8和gbk编码所占的位数
utf-8:6字节
gbk:4字节
a = "李杰"
Python3
len(a) = 2
使用for循环,打印每个字符:李,杰
Python2
len(a) = 6 #按字节计算
使用for循环,循环输出六次:但是都是乱码,每个乱码代表一个字节
v = "李杰"
for item in v:
print(item)
5,Python单行注释和多行注释分别用什么?
单行注释#
多行注释““” ‘’‘
6,声明变量注意事项有哪些?
字母,数字,下划线。数字不能开头,不能用python关键字,最好不用python内置字符
7,如有一变量n1 = 5,请使用int提供的方法,得到该变量最少可以用多少个二进制位表示
ni = 10
v = ni.bit_length()
print(v)
8,布尔值分别有什么?
True False 首字母大写
”“(空字符串), 0,
9,阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a) #输出alex
print(b) #输出Alex
字符串不可更改
10,写代码,有如下变量,请按照要求实现每个功能
a,移除name变量对应的值两边的空格,并输入移除后的内容
name = " aleX"
print(name)
name = name.strip()
print(name)
b,判断name变量对应的值是否以”al“开头,并输出结果
v = name.startswith('al')
print(v)
c,判断name变量对应的值是否以”X“结尾,并输出结果
v = name.endswith('X')
print(v)
d,将name变量对应的值中的”l“替换为”p“,并输出结果
v = name.replace('l','p')
print(v)
e,将name变量对应的值根据”l“分割,并输出结果。
v = name.partition('l')
print(v)
f,请问,上一题分割之后得到值是什么类型(可选)?
print(type(v))
g,将name变量对应的值便大写,并输出结果
v = name.upper()
print(v)
print(name)
h,将name变量对应的值变小写,并输出结果
v = name.lower()
print(v)
i,请输出name变量对应的值的第2个字符?
print(name[1])
j,请输出name变量对应的值的前3个字符?
print(name[0:3])
k,请输出name变量对应的值的后2个字符
name = "rooteded"
print(name[-2:len(name)])
l,请输出name变量对应的值中”e“所在索引位置
print(name.index('e'))
m,获取子序列,仅不包含最后一个字符。如oldboy则获取oldbo,root则获取roo
name = "oldboy"
print(name[0:-1])
21,字符串是否是可迭代对象?如可以请使用for循环每一个元素?
#字符串是可迭代对象,可以用for循环
for item in name:
print(item)
22,请用代码实现:
a,利用下划线将列表的每一个元素拼接成字符串,li = ”alexericrain“
li = "alexericrain"
v = '_'.join(li)
print(v)
b,利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain']
li = ['alex','eric','rain']
v = '_'.join(li)
print(v)
23,Python2中的range和Python3中的range的区别?
# Python2中直接创建在内容中,xrange相当于python3中的range
# python3中只有for循环时,才一个一个创建,保护机制
# r1 = range(10)
# r2 = range(1,10)
24,实现一个整数加法计数器:
content = input('请输入内容: ’) #如: 5+9
content = input("请输入内容:")
li = content.partition('+')
print(li)
li[0].strip()
li[2].strip()
print(int(li[0])+int(li[2]))
25,计算用户输入的内容中有几个十进制小数?几个字母?
content = input('请输入内容: ’) #如: adfadfd78797sdfsdf-998afd
count_m = 0
count_a = 0
content = input("请输入内容:")
for item in content:
if(item.isdecimal()):
count_m += 1
elif (item.isalpha()):
count_a += 1
else:
continue
print(count_m)
print(count_a)
26,简述int和9等数字,以及str和”xxoo“等字符串的关系?
int类,9实例,
str类,“xxoo”对象
27,制作趣味模板程序
需求:等待用户输入名字,地点,爱好,根据用户的名字和爱好进行任意显示
如:敬爱可亲的XXX,最喜欢在XXX地方干XXX
namein = input("请输入姓名:")
positionin = input("请输入地点:")
doingin = input("请输入爱好: ")
template1 = "敬爱可亲的{name},最喜欢在{position}地方干{doing}"
print(template1)
v = template1.format(name=namein,position=positionin,doing =doingin)
print(v)
28,制作随机验证码,不区分大小写
流程:
-用户执行程序
-用户显示需要输入的验证码
-用户输入的值
用户输入的值和显示的值相同时显示正确信息;否则继续生成随机验证码继续等待用户输入
生成随机验证码代码示例
def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
return checkcode
while True:
code = check_code()
print(code)
user_input = input("请输入验证码: ")
if code == user_input:
print("输入正确,退出")
break
else:
continue
29,开发敏感词过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊字符,如”苍老师“等,则将内容替换为 ***
content = input("please input:")
content = content.replace('苍老师','***')
print(content)
30,制作表格
循环提示用户输入:用户名,密码,邮箱(要求用户输入的长度不超过20个字符,如果超过则只有前20个字符有效)如果用户输入q或Q表示不再继续输入,将用户输入的内容以表格形式打印。
s = ''
while True:
user_name = input("请输入用户名: ")
user_password = input("请输入密码: ")
user_email = input("请输入邮箱: ")
temp = "{0}\t{1}\t{2}\n"
v = temp.format(user_name,user_password,user_email)
s = s + v
if user_name == 'q' or user_name =='Q':
break
print(s.expandtabs(20))
练习二
1,请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex','eric','rain']
v = '_'.join(li) print(v) #有数字的情况 li = ['alex','eric',123] li[2] = str(li[2]) v = '_'.join(li) print(v)
2,查找列表中元素,移除每个元素的空格,并查找以a或A开头,并且以x结尾的所有元素。
li = ["alex"," aric","Alex","Tony","rain"]
for item in range(0,len(li)): li[item] = li[item].strip() print(li) for item in li: if item.upper().startswith('A') == True and item.endswith('x'): print(item)
tu = ("alex"," aric","Alex","Tony","rain")
# tu元组不支持修改一级元素
for item in tu: if item.upper().startswith('A') == True and item.endswith('x'): print(item)
dic = {'k1':"alex",'k2':' aric',"k3":"Alex","k4":"Tony"}
print(dic) for item in dic.items(): dic.update({str(item[0]):str(item[1]).strip()}) print(dic) for item in dic.values(): if item.upper().startswith('A') == True and item.endswith('x'): print(item)
3,写代码,有如下列表,按照要求实现每一个功能
li = ['alex','eric','rain']
a,计算列表长度并输出
print(len(li))
b,列表中追加元素”seven“,并输出添加后的列表
li.append("Seven") print(li)
c,请在列表的第1个位置插入元素 ”Tony“,并输出添加后的列表
li.insert(0,"Tony") print(li)
d,请修改列表第2个位置的元素为”Kelly“,并输出修改后的列表
li[1] = "Kelly" print(li)
e,请删除列表中的元素"eric",并输出修改后的列表
li.remove("eric") print(li)
f,请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
v = li.pop(1) print(v,li)
g,请删除列表中的第3个元素,并输出删除元素后的列表
v = li.pop(2) print(li)
h,请删除列表中的第2至4个元素,并输出删除元素后的列表
li = ["手机","电脑","鼠标垫","游艇","打印机"] del li[1:4] print(li)
i,请将所有的元素反转,并输出反转后的列表
li.reverse() print(li)
j,请使用for,len,range输出列表的索引
for idx in range(len(li)): print(idx)
k,请使用enumerate输出列表元素和序号(序号从100开始)
for idx,elem in enumerate(li,100): print(idx,elem)
l,请使用for循环输出列表的所有元素
for item in li: print(li)
4,写代码,有如下列表,请按照功能要求实现每一个功能
li = ["hello",'seven',["mon",["h","kelly"],'all'],123,446]
a,请根据索引输出"Kelly"
b,请使用索引找到'all'元素并将其修改为”ALL“,如li[0][1][9]
print(li[2][1][1])
li[2][2] = li[2][2].upper() print(li)
5,写代码,有如下元组,按照要求实现每一个功能
tu = ('alex','eric','rain')
a,计算元组长度并输出
print(len(tu))
b,获取元组的第2个元素,并输出
print(tu[1])
c,获取元组的第1-2个元素,并输出
print(tu[0:2])
d,请使用for输出元组的元素
for item in tu: print(item
e,请使用for,len,range输出元组的索引
for item in range(len(tu)): print(item)
f,请使用enumerate输出元组元素和序号(序号从10开始)
for idx,elem in enumerate(tu,10): print(idx,elem)
6,有如下变量,请实现要求的功能
tu = ("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
a,讲述元组的特性
# 一级元素不能增,删,改
b,请问tu变量中的第一个元素”alex“是否可以被修改
# 不能
c,请问tu变量中的”k2“对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven"
# 列表,可以被修改 tu[1][2]["k2"].append("Seven") print(tu)
d,请问tu变量中的”k3“对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven"
# 元组,不能修改
7,字典
dic = {'k1':"v1","k2":"v2","k3":[11,22,33]}
a,请循环输出所有的key
for item in dic: print(item)
b,请循环输出所有的value
for item in dic.values(): print(item)
c,请循环输出所有的key和value
for k,v in dic.items(): print(k,v)
d,请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
dic.update({"k4":"v4"}) print(dic)
e,请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
dic.update({"k1":"alex"}) print(dic)
f,请在k3对应的值中追加一个元素44,输出修改后的字典
dic["k3"].append(44) print(dic)
g,请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
dic["k3"].insert(0,18) print(dic)
8,转换
a,将字符串 s = "alex" 转换成列表
s = "alex" li = list(s) print(li)
b,将字符串 s = ”alex“ 转换成元组
s = " alex" tu = tuple(s) print(tu)
c,将列表li = ["alex","seven"] 转换成元组
li = ["alex","seven"] tu = tuple(li) print(tu)
d,将元组tu = ['Alex',"seven"]转换成列表
tu = ['Alex',"seven"] li = list(tu) print(li)
e,将列表 li = ["alex","seven"]转换成字典且字典的key按照10开始向后递增
dic = {} li = ["alex","seven"] for idx,item in enumerate(li,10): dic.update({idx:item}) print(dic)
9,元素分类
有如下集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。即:{'K1':大于66的所有的值,'k2':小于66的所有的值}
li = [11,22,33,44,55,66,77,88,99,90] d66 = [] x66 = [] dic ={} for item in li: if item > 66: d66.append(item) dic.update({"k1":d66}) elif item < 66: x66.append(item) dic.update({"k2":x66}) else: continue print(dic)
10,输出商品列表,用户输入序号,显示用户选中的商品
商品 li = ["手机","电脑","鼠标垫","游艇"]
a,允许用户添加商品
b,用户输入序号显示内容
while True: content = input("请输入:") if int(content) < len(li): print(li[int(content)]) else:#如果大于列表的最大索引则添加内容 add_cont = input("添加内容:") li.append(add_cont) print(li)
11,用户交互显示类似省,市,县N级联动的选择
a,允许用户增加内容
b,允许用户选择查看某一个级别内容
12,列举布尔值是False的所有值
None,False,0,"",'',[],(),{}
print(bool(None),bool(False),bool(0),bool(""),bool(''),bool([]),bool(()),bool({}))
13,有两个列表
l1 = [11,22,33]
l2 = [22,33,44]
a,获取内容相同的元素列表
for item in l1: if item in l2: print(item)
b,获取l1中有,l2中没有的元素列表
for item in l1: if item not in l2: print(item)
c,获取l2中有,l1中没有的元素列表
for item in l2: if item not in l1: print(item)
d,获取l1和l2中内容都不同的元素
#b和c答案放到一起
14,利用For循环和range输出
a,For循环从大到小输出 1 - 100
for i in range(100,0,-1): print(i)
b,For循环从小到大输出 100 - 1
for i in range(1,101): print(i)
c,While循环从大到小输出 1 - 100
i = 100 while i > 0: print(i) i -= 1
d,While循环从小到大输出 100 - 1
i = 1 while i < 101: print(i) i += 1
15,购物车
功能要求:
要求用户输入总资产,例如:2000
显示产品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则购买成功。
goods = [
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},
]
real_total = input("请输入最大购买额:") user_cart =[] user_add = 0 while True: print("菜单列表") for i in range(0,len(goods)): print(i,goods[i]) user_choose = input("请输入加入购物车数字:") user_add += goods[int(user_choose)]["price"] if user_add < int(real_total): user_cart.append(goods[int(user_choose)]["name"]) else: print("超出最大购买额") user_add -= goods[int(user_choose)]["price"] print("购物车里:",user_cart)
16,分页显示内容
a,通过for循环创建301条数据,数据类型不限,如:
alex-1 alex1@live.com pwd1
alex-2 alex2@live.com pwd2
alex-3 alex3@live.com pwd3
b,提示用户 请输入要查看的页码,当用户输入指定的页码,则显示指定数据
注意:
-每页显示10条数据
-用户输入页码是非十进制数字,则提示输入内容格式错误
user_list =[] for i in range(1,302): temp = {"name":"alex"+str(i),"email":"alex"+str(i)+"@live.com","pwd":"pwd"+str(i)} user_list.append(temp) # print(user_list) while True: s = input("请输入页码: ") s = int(s) start = (s - 1) * 10 end = s * 10 result = user_list[start:end] for item in result: print(item, type(item))
17,有1,2,3,4,5,6,7,8,8个数字,能组成多少个互不相同且无重复数字的两位数?
li = [1,2,3,4,5,6,7,8] dst =[] for x in range(0,len(li)): for y in range(0,len(li)): if x != y: dst.append(li[x]*10 + li[y]) print(dst)
18,利用for循环和range输出9×9乘法表
#法1 for x in range(1,10): s = "" for y in range(1,x+1): s = s + str(x*y) + "\t" print(s.expandtabs(3)) #法2 for i in range(1,10): for j in range(1,i+1): print(str(j) + "*" +str(i) + "=" + str(i*j) + "\t",end="") print("\n",end="") print("alex","haifeng","gangniang",sep='弄',end='66') #print 的分隔符和结尾的使用
19,有以下列表,
nums = [2,7,11,15,1,8,7]
请找到列表中任意两个元素相加能够等于9的元素集合,如[(0,1),(4,5)]
a = [] for x in nums: for y in nums: if x + y == 9: a.append((x,y),) print(a) #改成索引 a = [] for x in range(len(nums)): for y in range(len(nums)): if nums[x] + nums[y] == 9: a.append((x,y),) print(a)
20,用Python开发程序自动计算方案:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
for x in range(1,100//5): for y in range(1,100//3): for z in range(1,100): if x+y+z == 100 and 5*x + 3*y +z/3 == 100: print(x,y,z)