1.执行Python脚本的两种方式
a、 运行cmd,在黑框中输入编译器地址及要运行脚本的地址 b、在pycharm中编译脚本
2.简述位与字节的关系
1个字节由8个二进制数构成,即1byte=8bit
3.简述asscii码、unicode、utf-8、gbk的关系
asscii(8位,未包含其他国家字符) unicode(16或32位,万国码,占内存) utf-8(8-32位,汉字24位) gbk(16位,主要为汉字)
4.请写出“李杰”分别用utf-8和gbk编码所占的位数
utf-8占24位,gbk占16位
5.python单行注释与多行注释分别用什么?
单行注释为:# 多行注释为:三个引号包着注释内容(单引号或者双引号)
6.声明变量注意哪些事项?
变量名只能由字母、数字、下划线组成;且数字不能开头;变量名不能与特殊字符一致 见名知意原则
7.如有以下变量n1=15,请使用int提供的方法,得到该变量最少用多少二进制位表示?
n1=15
val=n1.bit_length()
print(val)
8.布尔值分别有什么?
True和False,其中False主要有:0 none "" [] () {}
9.阅读代码,请写出执行结果
a="alex"
b=a.capitalize()
print(a)
print(b)
输出结果为:alex Alex
10.写代码,有如下变量,请按照要求实现每个功能。name=" aleX"
a.移除name变量对应值两边的空格,并输出移除后的内容
name = " aleX"
val=name.strip()
print(val)
b.判断name变量是否以“al”开头,并输出结果
name = "aleX"
if name.startswith('al'):
print("确实以al开头")
c.判断变量name对应的值是否以“X”结尾,并输出结果。
name = "aleX"
if name.endswith('X'):
print("确实以X结尾")
d.将name变量对应值中的“l”替换成“p”,并输出结果。
name = "aleX"
val=name.replace('l','p')
print(val)
e.将name变量对应的值根据“l”分割,并输出结果。
name = "aleX"
val=name.split('l')
print(val) #结果为:['a','eX']
f.请问上一题e中分割后得到的值是什么类型?
列表类型
g.将name变量对应的值变大写,并输出结果。
name = "aleX"
val=name.upper()
print(val)
h.将name变量对应的值变小写,并输出结果。
name = "aleX"
val=name.lower()
print(val)
i.请输出变量name对应值的第2个字符
name = "aleX"
print(name[1])
j.请输出变量name对应值的前3个字符
name = "aleX"
print(name[0:3])
k.请输出name变量对应值的后2个字符。
name = "aleX"
print(name[-2:])
l.获取子序列,仅不包含最后一个字符,如:oldboy,则获取oldbo
name = "oldboy"
print(name[0:-1])
11.写代码,分别使用whlie和for循环分别打印字符串每个字符。
name="hello world!"
for i in name:
print(i)
name="hello world!"
i=0
while i<len(name):
print(name[i])
i+=1
12.请用代码实现:li=['alex','eric','rain'],利用下划线将列表中的每一个元素拼接成字符串:"alex_eric_rain"
#方法一:
li=['alex','eric','rain']
val="_".join(li)
print(val)
#方法二:
li=['alex','eric','rain']
val=""
for i in range(0,len(li)):
if i==0:
val=val+li[i]
else:
val=val+"_"+li[i]
print(val)
#方法三:
li=['alex','eric','rain']
msg = ""
is_first = True
for item in li:
if is_first:
tmp = item
is_first =False
else:
tmp = "_" + item
msg += tmp
print(msg)
13.实现一个整数加法计数器:
如:content=input("请输入内容:"),如用户输入5+9,然后进行分割再计算
#方法一:
sum=0
content=input("请输入内容:")
msg=content.split('+')
for v in msg:
sum=sum+int(v.strip())
print(sum)
#方法二:
content = input('请输入表达式:')
a,b = content.split('+',1)
a = int(a.strip())
b = int(b.strip())
print(a+b)
14.计算用户输入的内容中有几个整数?如:content=input("请输入内容:") #ssfka98374hjf326
content=input("请输入内容:")
count=0
for v in content:
if v.isdecimal():
count+=1
print(count)
15.简述int和9等数字,以及str和"xxoo"等字符串的关系?
功能对象
16制作趣味模板程序,需求:等待用户输入名字、地点、爱好,根据以上内容任意实现。如:敬爱可亲的xx,最喜欢在xx干xx
#方法一:
name=input("姓名:")
place=input("地点:")
hobby=input("爱好:")
print("敬爱可亲的%s,最喜欢在%s干%s" %(name,place,hobby))
#方法二:
name=input("姓名:")
place=input("地点:")
hobby=input("爱好:")
val="敬爱可亲的{0},最喜欢在{1}干{2}"
val=val.format(name,place,hobby)
print(val)
17.制作随机验证码,不区分大小写。
流程:
-用户执行程序
-给用户显示输入的验证码
-用户输入的值
用户输入的的值与显示的值相同时显示正确信息;否则继续生成随机验证码继续等待用户输入,生成随机验证码代码如下:
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)
msg=input("请输入验证码:")
a=code.strip().upper()
b=msg.strip().upper()
if a==b:
print("登陆成功")
break
else:
print("请重新输入!")
18.开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符,如敏感字符列表为:li=["苍老师","东京热"],则将用户输入的任意敏感字符串替换为***
li=["苍老师","东京热"]
msg=input("请输入内容:")
for v in li:
if v in msg:
msg= msg.replace(v,'***')
print(msg)
19.查找列表中元素,移除每个元素的空格,并且查找以'a'或者'A'开头,并且以'c'结尾的所有元素。
li=["alec","aric","Alex","Tony","rain"]
tu=("alec","aric","Alex","Tony","rain")
dic={'k1':"alec",'k2':"aric",'k3':"Alex",'k4':"Tony"}
#列表:
#方案1:
li=["alec","Aric","Alex","Tony","rain"]
for v in li:
v=v.strip()
if (v[0]=='a' or v[0]=='A')and v[-1]=='c':
print(v)
#方案2:
li=["alec","Aric","Alex","Tony","rain"]
for v in li:
if v.strip().lower().startswith('a')and v.strip().endswith('c'):
print(v)
#元组:
tu=("alec","aric","Alex","Tony","rain")
for v in tu:
v=v.strip()
if (v[0]=='a' or v[0]=='A')and v[-1]=='c':
print(v)
#字典:
dic={'k1':"alec",'k2':"Aric",'k3':"Alex",'k4':"Tony"}
for v in dic.values():
if v.strip().lower().startswith('a') and v.strip().endswith('c'):
print(v)
20.写代码,有如下列表,按照要求实现每一个功能:li=["alex","eric","rain"]
a.计算列表长度并输出。
li=["alex","eric","rain"]
print(len(li))
b.列表中追加元素"seven",并输出添加后的列表
li=["alex","eric","rain"]
li.append('seven')
print(li)
c.请在列表的第一个位置添加'tony',并输出添加后的列表
li=["alex","eric","rain"]
li.insert(0,'tony')
print(li)
d.请修改列表第二个元素为"lelly",并输出修改后的列表
li = ["alex", "eric", "rain"]
li[1]="lelly"
print(li)
f.请删除列表第二个元素,并输出删除的元素及删除后的列表
#方法1.
li = ["alex", "eric", "rain"]
val=li.pop(1)
print(val,li)
#方法2.
li = ["alex", "eric", "rain"]
print(li[1])
del li[1]
print(li)
g.请删除列表中的第三个元素,并输出删除后的列表
li = ["alex", "eric", "rain"]
del li[2]
print(li)
h.请删除列表中2到4位的元素,并输出删除后的列表
li = ["alex", "eric", "rain"]
del li[1:4]
print(li)
i.请将列表中的所有元素反转,并输出反转后的列表
li = ["alex", "eric", "rain"]
li.reverse()
print(li)
j.请使用while及len输出列表的索引值
li = ["alex", "eric", "rain"]
i=0
while i<len(li):
print(i)
i+=1
l.请使用for循环输出列表的所有元素
li = ["alex", "eric", "rain"]
for v in li:
print(v)
21.写代码,有如下列表,请按照功能要求实现每一个功能。
li=['hello','seven',['mon',['h','kelly'],'all'],123,446]
a.请根据索引输出'kelly'
li=['hello','seven',['mon',['h','kelly'],'all'],123,446]
print(li[2][1][1])
b.请根据索引找到'all'元素,并将其修改为"ALL",如li[0][1][9]...
li=['hello','seven',['mon',['h','kelly'],'all'],123,446]
print(li[2][2])
li[2][2]="ALL"
print(li)
22.写代码,有如下元组,按照要求实现每一个功能。
tu=('alex','eric','rain')
a.计算元组长度并输出
tu=('alex','eric','rain')
print(len(tu))
b.获取元组的第2个元素,并输出
tu=('alex','eric','rain')
print(tu[1])
c.获取元组的第1-2个元素,并输出
tu=('alex','eric','rain')
print(tu[0:2])
d.请使用for循环输出元组的元素
tu=('alex','eric','rain')
for v in tu:
print(v)
e.请使用whlie、len输出元组的索引值,如0,1,2....
tu=('alex','eric','rain')
i=0
while i<len(tu):
print(i)
i+=1
23.有如下变量,请按照要求实现功能
tu=('alex',[11,22,{"k1":"v1","k2":['age','name'],"k3":(11,22,33)},44])
a.讲述元组的特性
元组中的元素不可变,元素可以根据数据类型进行变换---即儿子不可以变,孙子可变
b.请问tu中的第一个元素'alex'是否可以被修改?
不可以
c.请问tu变量中"k2"对应的值是什么类型?是否可以被修改?如果可以在其中添加一个元素"seven"
list列表类型,可以被修改
tu=('alex',[11,22,{"k1":"v1","k2":['age','name'],"k3":(11,22,33)},44])
val=tu[1][2]["k2"]
val.append("seven")
print(val,tu)
d.请问变量tu中"k3"对应的值是什么类型?是否可以被修改?如果可以在其中添加一个元素"seven"
元组tuple类型,不可以被修改
24字典:dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
a.请循环出所有的key
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
#情况一:
for v in dic:
print(v)
#情况二:
for v in dic.keys():
print(v)
b.请循环出所value的值
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
# 情况一:
for v in dic:
print(dic[v])
# 情况二:
for v in dic.values():
print(v)
c.请循环输出所有的key和value
#情况一:
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
for a,b in dic.items():
print(a,b) #结果为单个字符:k1 v1 k2 v2 k3 [11, 22, 33]
#情况二:
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
for v in dic.items():
print(v) #结果为元组:('k1', 'v1') ('k2', 'v2') ('k3', [11, 22, 33])
d.请在字典中添加一个键值对:"k4":"v4",输出添加后的字典
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic['k4']="v4"
print(dic)
e.请修改字典中"k1"对应的值为:"alex",并输出修改后的字典
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic['k1']="alex"
print(dic)
f.请在k3对应的值中添加一个元素44,并输出修改后的字典
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic['k3'].append(44)
print(dic)
g.请在字典中k3对应的值的第一个位置插入元素18,并输出修改后的字典
dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic['k3'].insert(0,18)
print(dic)
25.元素分类:有如下值集合li=[11,22,33,44,55,66,77,88,99,90],将所有值大于66的保存在字典"k1'中,将所有值小于66的保存在字典'k2'中。即:{'k1':所有大于66的列表,'k2':所有小于66的列表}
#思路一
li=[11,22,33,44,55,66,77,88,99,90]
dic={}
for v in li:
if v>66:
if 'k1' in dic:
dic['k1'].append(v)
else:
dic['k1']=[v]
elif v<66:
if 'k2' in dic:
dic['k2'].append(v)
else:
dic['k2'] = [v]
print(dic)
#思路二
li=[11,22,33,44,55,66,77,88,99,90]
dic={}
a=[]
b=[]
for v in li:
if v>66:
a.append(v)
elif v<66:
b.append(v)
dic['k1']=a
dic['k2']=b
print(dic)
26.输出商品列表,用户输入序号,显示用户选中的商品
商品 li=["手机","电脑","鼠标垫","游艇"]
要求:页面显示 序号+商品名称,如:
1 手机
2 电脑
...
用户输入商品名称序号,然后打印商品名称
li=["手机","电脑","鼠标垫","游艇"]
num=1
for v in li:
print("%d %s" %(num,v))
num+=1
while True:
val=input("选择商品序号:")
val=int(val)
if val>0 and val<5:
print("商品名称为:%s" %li[val-1])
break
else:
print("序号不合法,请重新输入")
27.列举字符串、数字中布尔值为False的所有值
布尔值为False的值主要有:0 none "" [] () {}
28.有两个列表:
l1=[11,22,33]
l2=[22,33,44]
a.获取内容相同的元素列表
l1=[11,22,33]
l2=[22,33,44]
result=[]
for i in l1:
for j in l2:
if i==j:
result.append(i)
print(result)
b.获取l1中有,l2中没有的元素的列表
l1=[11,22,33]
l2=[22,33,44]
result=[]
for i in l1:
for j in l2:
if i==j:
break
else:
result.append(i)
print(result)
c.获取l2中有,l1中没有的的元素的列表
l1=[11,22,33]
l2=[22,33,44]
result=[]
for i in l2:
for j in l1:
if i==j:
break
else:
result.append(i)
print(result)
d.获取l1和l2中都不同的元素
l1=[11,22,33]
l2=[22,33,44]
result=[]
for i in l1:
for j in l2:
if i==j:
break
else:
result.append(i)
for u in l2:
for v in l1:
if u==v:
break
else:
result.append(u)
print(result)
29.购物车
功能要求:
要求用户输入自己的总资产,如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总金额大于资产,提示余额不足,否则购买成功
goods=[{'name':"电脑",'price':"1999"},
{'name': "鼠标", 'price': "10"},
{'name': "游艇", 'price': "20"},
{'name': "美女", 'price': "998"}
]
goods=[{'name':"电脑",'price':"1999"},
{'name': "鼠标", 'price': "10"},
{'name': "游艇", 'price': "20"},
{'name': "美女", 'price': "998"}
]
#1.用户输入金额
while True:
total=input("请输入总金额:")
total=total.strip()
if total.isdigit():
total=int(total)
print("你的总金额为;%d" %total)
break
else:
print("输入不合法,请重新输入")
#2.显示商品
num=1
for v in goods:
print(num,v['name'],v['price'])
num+=1
#3.购买商品
cost=0
while True:
val=input("请选择商品(输入q结算);")
val=val.strip()
if val.lower()=='q':
break
if val.isdigit():
val=int(val)
if val>0 and val<5:
print(goods[val-1]['name'],goods[val-1]['price'])
cost+=int(goods[val-1]['price'])
else:
print("你输入的商品不存在")
else:
print("输入不合法,请重新输入")
if total>=cost:
print("购买成功")
else:
print("余额不足")
30.分页显示内容
a.通过for循环创建301条数据,数据类型如下:
alex-1 alex1@live.com pwd1
alex-2 alex2@live.com pwd2
alex-3 alex3@live.com pwd3
.....
ps:可以使用while循环自己创建user_list=[],循环创建字典{"user":'xxx',"email":'xxx',"pwd":""},将创建的字典追加到列表
b.提示用户,请输入要查看的页码,当用户输入指定页码,则显示指定数据
注意:每页显示10页数据;用输入内容为非十进制数字时,提示输入错误
u
user_list=[]
i=1
while i<=301:
user_list.append({'user':'alex-%d' %i,'email':'alex%d@live.com' %i,'pwd':'pwd%d' %i})
i+=1
while True:
page=input('请输入页码:')
if page.strip().isdigit():
page=int(page)
if page>0 and page<32:
start=10*(page-1)
end=10*page
current_user_list=user_list[start:end]
for v in current_user_list:
print(v)
else:
print("页码不错在请重新输入")
else:
print('输入错误,请重新输入')