【练习】Python第一,二次

时间:2023-03-09 01:31:46
【练习】Python第一,二次

练习一

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='')
#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)