# 1.打印水仙花数
print('1.打印100-999的水仙花数')
for i in range(100,1000):
i_100 = i // 100
i_10 = (i % 100) // 10
i_1 = i % 10
if i == i_1**3 + i_10**3 + i_100**3:
print(i)
print('-'*50,'\n\n')
# 2. 1、2、3、4 组数
print('2. 1、2、3、4组成不同的三位数')
num = [x*100+y*10+z for x in range(1,5)
for y in range(1,5)
for z in range(1,5)
if x != y != z]
print(' 能组成%d位三位数,分别是:' % len(num))
print(num)
print('-'*50,end='\n\n')
# 3.列表分割:后期可以作为分类功能使用
# 比如列表[0,0,0,1,1,2,3,3,3,2,3,3,0,0]
# 分割成[[0,0,0],[1,1],[2],[3,3,3],[2],[3,3],[0,0]]
# 3.1while 循环加try实现,较复杂
print('3. 列表分割')
print('-'*25+'while循环+try实现'+'-'*25)
# 初始列表
ori_list = [0,0,0,1,1,2,3,3,3,2,3,3,0,0,0,0,1,65,48,48,9]
# 构建空列表
res_list = []
# 初始化序列值 i
i = 0
while i < len(ori_list):
try:
if ori_list[i] != ori_list[i+1]: # 如果i 和 i+1 不等,就切,否则继续循环
res_list.append(ori_list[:(i+1)])
ori_list = ori_list[(i+1):]
i = 0
else:
i += 1
except Exception: # 会出现超过序列索引的异常
if len(ori_list) == 1: # 最后剩下的元素只剩一个
res_list.append(ori_list)
break
else:
if ori_list[0] == ori_list[1]: # 剩下两个相等元素
res_list.append(ori_list)
break
else: # 剩下两个不等元素
res_list.append(ori_list[:1])
res_list.append(ori_list[-1:])
break
print(res_list)
print('-'*50,end='\n\n')
# 3.2 for循环'实现
print('-'*25+'for循环实现'+'-'*25)
# 试验发现:for循环不能重置 i 的初始值,所以不能用 i 做索引值,需要添加新变量Start作为索引值
list02 = [0,0,0,1,1,2,3,3,3,2,3,3,0,0,0,0]
sp_list02 = []
# 初始化切片开头索引值
start = 0
for i in range(len(list02)-1):
if list02[i] != list02[i+1]:
sp_list02.append(list02[start : i+1])
start = i + 1
sp_list02.append(list02[start:])
print(sp_list02)
print('-'*50,end='\n\n')
# 4.冒泡排序
# 4.1由小到大
list1= [12,14,5,9,30,16]
res = [5, 9, 12, 14, 16, 30]
# 由小到大
print('由小到大排列list1')
for i in range(len(list1)-1):
for j in range(1,len(list1)):
if list1[j-1] > list1[j]:
list1[j],list1[j-1] = list1[j-1],list1[j]
print(list1)
# 4.2由大到小
print('由大到小排列res')
for i in range(len(res)-1):
for j in range(1,len(res)):
if res[j-1] < res[j]:
res[j],res[j-1] = res[j-1],res[j]
print(res)
print('-'*50,end='\n\n')
# 5.将一个整数分解质因数。例如: 输入90 打印出2*3*3*5=90
print('5. 分解质因数')
n_list = []
n = int(input('请输入要分解的因数:'))
for i in range(2,n+1):
while True:
if n % i == 0:
n_list.append(i)
n /= i
else:
break
print(n_list)
# 6.球的反弹问题
问题:给定一个初始高度,求反弹n次之后,球距地高度,和第n次落地时,球走过的距离
# 求球反弹高度
a1 = int(input('球的初始高度:'))
c = int(input('反弹次数:'))
i = 1
if c == 1:
d = a1
an = 0.5 * a1
else:
d = a1
an = 0.5 * a1
while i<c:
d += 2*an
an = 0.5*an
i+=1
print('第%d次落地时,共经过%d米' % (c,d))
print('第%d次反弹高度%f米' % (c, an))
这篇博客通过六个实例介绍了Python的基础应用,包括打印水仙花数、组合数、列表分割、冒泡排序以及整数质因数分解。特别讨论了列表分割的两种实现方式,分别使用while和for循环,并探讨了球的反弹问题和其在n次落地后的高度与行程计算。
1031

被折叠的 条评论
为什么被折叠?



