1、用户输入一个数字
(1)判断是几位数
(2)打印每一位数字及其重复的次数
(3)依次打印每一位数字,顺序个、十、百. . .位
num = input(">>>")
for i in num:
print(i, end=' ')
#打印重复次数的方法
(1)判断0-9的数字在字符串中出现的次数,每一次迭代都是用count,都是(O)问题
counter = [0]*10
for i in range(10): # n*10模式
counter[i] = num.count(str(i))
if counter[i]:
(2)迭代字符串本身的字符 # n*n模式
counter = [0]*10
for x in num:
i = int(x)
if counter[i] == 0:
counter[i] = num.count(x)
(3)迭代字符串本身的字符
counter = [0]*10 # n模式
for x in num:
i = int(x)
counter[i] += 1
for i in range(len(counter)):
if counter[i]:
print("The count of {} is {}".format(i,counter[i]))
#倒序打印方法
(1)倒序打印1
for i in range(len(num),0,-1):
print(num[i-1], end=' ')
print()
(2)倒序打印2
for i in reversed(num):
print(i, end=' ')
print()
(3)负索引方式打印
for i in range(len(num)):
print(num[-i-1], end=' ')
print()
2、输入5个数字,打印每个数字的位数,将这些数字排序打印,要求升序打印
num = []
length = len(num)
for i in range(5):
num.append(int(input('{}: '.format(i))))
print("Number of digits:", len(str(num[i])))
#冒泡法
for i in range(length):
flag = False
for j in range(length-i-1):
if num[j] > num[j+1]:
num[j], num[j+1] = num[j+1], num[j]
flag = True
if not flag:
break
print(num)
#sort方法排序
lst = num.copy()
lst.sort() #就地修改
print(lst)
四、数据结构集合练习
1、共同好友:你的好友A、B、C,他的好友C、B、D,求共同好友
{"A","B","C"}&{"C","B","D"}
2、微信群提醒:XXX与群里其他人都不是微信朋友关系
if{"XXX","sa","dd"}&{"b","c","d"} == set():#sa、dd是XXX的微信好友列表
print("XXX 与群里其他人都不是微信朋友关系")
3、权限判断
有一个API,要求权限同时具备A、B、C才能访问,用户权限是B、C、D,判断用户是否能够访问该API
API集合为A,权限集合为P
A - P = set()
A >= P
A & P = A
有一个API,要求权限具备A、B、C任意一项就可访问,用户权限是B、C、D,判断用户是否能够访问该API
API集合为A,权限集合为P
A & P != set()
4、一个总任务列表,存储所有任务。一个已完成的任务列表。找出为未完成的任务
总任务列表集合P,已完成的集合为A
则未完成的为:P - A
5、随机产生2组各10个数字的列表,如下要求:
(1)每个数字取值范围[10,20]
(2)统计20个数字中,一共有多少个不同的数字?
(3)2组中,不重复的数字有几个?分别是几个?
(4)2组中,重复的数字有几个?分别是几个?
import random
lst1 = []
lst2 = []
for i in range(10):
lst1.append(radom.randrange(10,21))
lst2.append(radom.randrange(10,21))
print(lst1)
print(lst2)
#一共有多少个不同的数字
set(lst1) | set(lst2)
#不重复的数字
set(lst1) ^ set(lst2)
#重复的数字
set(lst1) & set(lst2)
五、简单选择排序
1、一元简单选择排序
lst = [1,3,6,5,2,4,7,9]
length = len [lst]
for i in range(length):
maxindex = i
for j in range(i+1,length):
if lst[j] > lst[i]:
maxindex = j
if i != maxindex:
lst[i], lst[maxindex] = lst[maxindex], lst[i]
print(lst)
2、二元简单选择排序
lst = [1,3,6,5,2,4,7,9]
length = len(lst)
for i in range(length//2): # 两边一起排序,所以少一半
maxindex = i
minindex = -i-1或 length-1-i
minorigin = minindex
for j in range(i+1,length-i): # 每次左右固定一个,就少比较1个
if lst[j] > lst[maxindex]:
maxindex = j
if lst[-j-1或 length-1-j] < lst[minindex]:
minindex = -j-1 或 length-1-j
if lst[maxindex] == lst[minindex]: # 元素全相同
break
if i != maxindex:
lst[i], lst[maxindex] = lst[maxindex], lst[i]
# 如果最小值被交换过,要更新索引
if i == length + minindex 或 i == minindex:
minindex = maxindex - length 或 maxindex
# 最小值索引不同,但值相同就没必要交换了
if minorigin != minindex and lst[minorigin] != lst[minindex]:
lst[minorigin], lst[minindex] = lst[minindex], lst[minorigin]
print(lst)
数据结构字符串练习
原创
©著作权归作者所有:来自51CTO博客作者zuozuoandyouyou的原创作品,如需转载,请与作者联系,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java-长字符串加密
加密:为你的长字符串提供最高级别的保护!!!
加密算法 JAVA -
python数据结构-字符串
python数据结构-字符串
python 数据结构 字符串 -
数据结构-字符串查找
数据结构-字符串查找
#include 子串 测试数据 -
串匹配数据结构-练习4 字符串匹配kmp算法 ios #include 数学公式 搜索