1 实验目的
2 实验内容
(一)输出所有质数
输入一个整数,输出小于该整数的所有质数(输出格式为{i:第i个质数,...},如{1: 2, 2: 3})。(二)01字符串
输入两个仅含'0'和'1'的字符串,依次输出两个字符串的所有非空子串的集合、它们所有公共的非空子串的集合以及它们所有非公共的非空子串的集合(集合按子串长度为主要关键词降序,子串表示的十进制为次要关键词升序输出)。
3 实验步骤
(一)输出所有质数
print("".join(['*' * 66, '\n', '请输入'.center(66), '\n', '-' * 66, '\n',
'ex1_1 输出所有质数'
.center(66), '\n', '*' * 66]))
n = int(input('请输入一个整数:'))
ans = {}
for i in range(2, n):
flag = 0
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
flag = 1
break
if flag == 0:
ans.update({len(ans) + 1: i})
print(ans)
(二)01字符串
-
步骤1 输入两个仅含'0'和'1'的字符串。
-
步骤2 通过切片操作,分别得到两个字符串的所有非空子串的集合。
-
步骤3 通过集合的交、并以及对称差运算,得到相应集合。
-
步骤4 按照子串长度降序,子串表示的十进制数升序输出这三个集合。
print(''.join(['*' * 66, '\n', 'ZheLu 人 工 智 能 试 验 箱'.center(66), '\n', '-' * 66, '\n',
'ex1_2 01字符串'
.center(66), '\n', '*' * 66]))
str1 = input('请输入第一个仅含\'0\'和\'1\'的字符串:')
str2 = input('请输入第二个仅含\'0\'和\'1\'的字符串:')
set1 = set()
set2 = set()
k = len(str1)
set1.update(str1[i:j+1] for i in range(k) for j in range(i,k))
k = len(str2)
set2.update(str2[i:j+1] for i in range(k) for j in range(i,k))
print('所有非空子串的集合为:', sorted(set1 | set2, key=lambda x: (-len(x), int(x))))
print('所有公共的非空子串的集合为:', sorted(set1 & set2, key=lambda x: (-len(x), int(x))))
print('所有非公共的非空子串的集合为:', sorted(set1 ^ set2, key=lambda x: (-len(x), int(x))))
4 观察与思考
-
可试着用列表推导式输出小于该整数的所有素数。
-
了解通过筛选法寻找素数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)