- 分解质因数.输入一个正整数,分解质因数
如 输入: 90 则打印: 90=233*5
(质因数是指最小能被原数整除的素数(不包括1))
a = int(input("请输入一个正整数: "))
L= []
a1=a
while a!=1:
for i in range(2,a+1):
if a%i == 0:
a = a//i
L.append(str(i))
break
print('%s=' % a1 + '*'.join(L))
- 一个球从100米高空下落,每次落地后反弹高度为原高度
的一半,再落下,写程序:- 算出皮球在第10次落后反弹多高
- 算出皮球在第10次反弹后经过多少米路程
# 1) 算出皮球在第10次落后反弹多高
# def qiu(n):
# if n == 0:
# return 100
# s = qiu(n-1)/2
# return s
# print('第十次落后反弹高度为:',qiu(10))
# 2) 算出皮球在第10次反弹后经过多少米路程
# def qiuqiu(h,t):
# s = 0
# for _ in range(t):
# s += h
# h /= 2
# s += h
# return s
# print('第十次反弹经历路程为:',qiuqiu(100,10),'米')
- 写一个生成器函数myxrange([start,]stop[,step])
来生成一系列的整数
要求myxrange功能与range函数功能完全相同
(不允许调用range函数和列表)
用自己写的myxrange,结合生成器表达式求 100以内所
有的奇数的平方和
def myxrange(n):
i = 0
while i <= n:
yield i
i += 1
L = myxrange(100)
L2 = sum(x **2 for x in L if x % 2==1)
print('100以内奇数平方和为:',L2)
4.实现一个与系统内建的range类相同功能的类
class MyRange:
def __init__(self,start,stop=None,step=1):
if stop is None:
stop = start
start = 0
self.start = start
self.stop = stop
self.step = step
def __iter__(self):
return MyRangeIterator(self.start,
self.stop,self.step)
class MyRangeIterator:
def __init__(self,start,stop,step):
self.start = start
self.stop = stop
self.step = step
def __next__(self):
if self.step > 0:
while self.start < self.stop:
r = self.start #要返回的值
self.start += self.step
return r
elif self.step < 0:
while self.start >self.stop:
r = self.start #要返回的值
self.start += self.step
return r
raise StopIteration
L = list(MyRange(5))
print(L) # [0, 1, 2, 3, 4]
print(sum(MyRange(1, 101))) # 5050
L2 = [x**2 for x in MyRange(1, 10, 3)]
print(L2) # [1, 16, 49]
for x in MyRange(10, 0, -3):
print(x) # 10, 7, 4, 1