您的位置:首页 > 编程语言 > Python开发

第2章 Python基础-字符编码&数据类型 综合 练习题

2018-03-12 17:35 691 查看

1、转换

将字符串s = "alex"转换成列表

s = "alex"
s_list = list(s)
print(s_list)


将字符串s = "alex"转换成元祖

s = "alex"
s_tuple = tuple(s)
print(s_tuple)


将列表li = ["alex", "seven"]转换成元组

li = ["alex", "seven"]
li_tuple = tuple(li)
print(li_tuple)


将元祖tu = ('Alex', "seven")转换成列表

tu = ('Alex', "seven")
tu_list = list(tu)
print(tu_list)


将列表li = ["alex", "seven"]转换成字典且字典的key按照10开始向后递增

li = ["alex", "seven"]
li_dic = {}
for k,v in enumerate(li,10):
li_dic[k] = v
print(li_dic)


2、元素分类

有如下值集合[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]
li1 = []
li2 = []
for i in li :
if i < 66:
li1.append(i)
elif i > 66:
li2.append(i)
else:
pass
dic = {"k1": li1,"k2": li2}
print(dic)


3、输出商品列表,用户输入序号,显示用户选中的商品

商品 li = ["手机", "电脑", '鼠标垫', '游艇']

允许用户添加商品

用户输入序号显示内容

print("商品列表,用户输入序号,显示用户选中的商品".center(25,'-'))
li = ["手机", "电脑", '鼠标垫', '游艇']
for i,num in enumerate(li,1):
print(i,num)
# 添加商品
choice = input("y=yes,n=no]  是否添加商品:".rjust(20,'-'))
if choice == "y" or choice == "Y":
good = input("需要添加的商品".rjust(20,'-'))
li.append(good)
for i,num in enumerate(li,1):
print(i,num)
elif choice =='n' or choice == "N":
pass
else:
print("请输入正确的选项")

choice_Item = input("[q=quit]  查看序号对应商品,按q退出!")
if choice_Item.isdigit() and int(choice_Item) <= len(li):
print(li[int(choice_Item)-1])


4、用户交互显示类似省市县N级联动的选择

允许用户增加内容

允许用户选择查看某一个级别内容

china = {
'北京':{
'海淀':{},
'朝阳':{},
'东城':{}
},
'湖北':{
'武汉':{},
'荆门':{},
'宜昌':{}
}
}

current_layer = china # 当前层
layers = []
tag = True

while tag:
# 一级菜单
for k in current_layer:
print(k)
choice = input(">:").strip()
# 二级菜单
if choice in current_layer:
# 进入下一级菜单,保存当前菜单
layers.append(current_layer)
# 二级菜单赋给当前层
current_layer = current_layer[choice]

elif choice == "back":
if len(layers) != 0:
# pop删除列表最后一个元素,并返回删除后最后一个元素
current_layer = layers.pop()
else:
print("已经是最顶层目录!")
elif choice == "add":
add_node = input("在当前目录下添加节点:")
current_layer[add_node] = {}
elif choice == "exit":
tag = False
print("good bye!")
else:
continue


5、列举布尔值是False的所有值

bool(0)   bool(None)  bool("") bool(())  bool([])  bool({})


6、有两个列表

  l1 = [11,22,33]

  l2 = [22,33,44]

获取内容相同的元素列表

#!/usr/bin/env python
# -*- coding:utf-8 -*-

l1 = [11,22,33]
l2 = [22,33,44]

s1 = set(l1)
s2 = set(l2)
s3 = s1 & s2

l3 = list(s3)

print(l3)


获取l1中有,l2中没有的元素列表

#!/usr/bin/env python
# -*- coding:utf-8 -*-

l1 = [11,22,33]
l2 = [22,33,44]

s1 = set(l1)
s2 = set(l2)
s3 = s1 - s2

l3 = list(s3)

print(l3)


获取l2中有,l3中没有的元素列表

#!/usr/bin/env python
# -*- coding:utf-8 -*-

l1 = [11,22,33]
l2 = [22,33,44]

s1 = set(l1)
s2 = set(l2)
s3 = s2 - s1

l3 = list(s3)

print(l3)


获取l1和l2中内容都不同的元素

#!/usr/bin/env python
# -*- coding:utf-8 -*-

l1 = [11,22,33]
l2 = [22,33,44]

s1 = set(l1)
s2 = set(l2)
s3 = s2 ^ s1

l3 = list(s3)

print(l3)


7、利用For循环和range输出

For循环从小到大输出1 - 100

#!/usr/bin/env python
# -*- coding:utf-8 -*-

for i in range(1,101):
print(i)


For循环从大到小输出100 - 1

#!/usr/bin/env python
# -*- coding:utf-8 -*-

for i in range(100,0,-1):
print(i)


While循环从小到大输出1 - 100

#!/usr/bin/env python
# -*- coding:utf-8 -*-

n = 1
while n <= 100:
print(n)
n += 1


While循环从大到小输出100 - 1

#!/usr/bin/env python
# -*- coding:utf-8 -*-

n = 100
while n >= 1:
print(n)
n -= 1


8、利用for循环和range输出9 * 9乘法表

#!/usr/bin/env python
# -*- coding:utf-8 -*-

for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%2d" % (j,i,i*j),end=" ") # 每次输出不换行(默认print会换行),第二位数字是固定的,所以最外层循环的i代表第二位
print (" ") # 当j(第一位数字)遍历一遍时换行


9、判断一个数是否为素数。(编程题)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 素数又称为质数,它指的是只能被1和它本身整除的整数。其中,1不是素数,任何时候都不用考虑1。

while True:
flag = True # 设置一个标志位,flag = True代表是素数,flag = Flase代表非素数
n = int(input("请输入一个数字:"))
if n < 2: # 0、1以及负数都不是素数
flag = False
else:
for i in range(2,n): # 除以比它小的所有数(不包括1和它本身),看它是否还有其他因数
# print(i)
if n % i == 0:
# print("%d能整除%d" %(n,i))
flag = False # 出现一次余数为0就代表可以除尽,即代表这个数为素数,就可以设置flag = False
break # 只要第一次出现flag = False,就不用继续往下循环,直接退出整个循环(第二层)
if flag == True:
print("%d,是素数" %(n))
else:
print("%d,非素数" %(n))


10.输出100以内的所有素数。(编程题)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 素数又称为质数,它指的是只能被1和它本身整除的整数。其中,1不是素数,任何时候都不用考虑1。

L = [] # 定义一个初始的素数列表
for n in range(2,101): # 循环100以内的素数n,从2开始,0、1不是素数
flag = True # 设置一个标志位,flag = True代表是素数,flag = Flase代表不是素数
for i in range(2,n): # 除以比它小的所有数(不包括1和它本身),看它是否还有其他因数
if n % i == 0:
flag = False # 出现一次余数为0就代表可以除尽,即代表这个数为素数,就可以设置flag = False
break # 只要第一次出现flag = False,就不用继续往下循环,直接退出整个循环(第二层)
if flag == True:
L.append(n) # 当flag = True时代表n为素数,追加到素数列表中
print("100以内的所有素数:",L)


11、求100以内的素数和。(编程题)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 素数又称为质数,它指的是只能被1和它本身整除的整数。其中,1不是素数,任何时候都不用考虑1。

s = 0 # 设置一个素数初始和为0
for n in range(2,101): # 循环100以内的素数n,从2开始,0、1不是素数
flag = True # 设置一个标志位,flag = True代表是素数,flag = Flase代表不是素数
for i in range(2,n): # 除以比它小的所有数(不包括1和它本身),看它是否还有其他因数
if n % i == 0:
flag = False # 出现一次余数为0就代表可以除尽,即代表这个数为素数,就可以设置flag = False
break # 只要第一次出现flag = False,就不用继续往下循环,直接退出整个循环(第二层)
if flag == True:
s += n # 当flag = True时代表n为素数,此时和之前的素数之和相加得到最新的素数之和
print("100以内的素数和为:",s)


12、将[1,3,2,7,6,23,41,24,33,85,56]从小到大排序(冒泡法)(编程)

li = [1,3,2,7,6,23,41,24,33,85,56]

for i in range(len(li)-1): # i的范围0-9
if li[i] > li[i+1]: # 相邻的两个数比较
li[i],li[i+1] = li[i+1],li[i]
print(li)


li = [1,3,2,7,6,23,41,24,33,85,56]

for i in range(len(li)-1): # i的范围0-9
for j in range(i+1,len(li)): # j的范围1-10
if li[i] > li[j]: # 相邻的两个数比较
li[i],li[j] = li[j],li[i]
print(li)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: