python之路_数据类型相关例题解析(2)

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('输入错误,请重新输入')
posted @ 2017-08-26 19:12  骑猪走秀  阅读(582)  评论(0编辑  收藏  举报