Python简单练习2
-
- 2.编写函数,实现辗转相除法,接收两个整数,返回两个整数的最大公约数。
- 3.编写函数,接收参数a和n,计算并返回形式如 a+aa+aaa+aaaa+ ...+aaa...aaa的表达式前n项的值,其中为小于10的自然数
- 4.编写函数,接收一个字符串,判断该字符串是否回文。所谓回文是指,从前向后读和从后向前读是一样的
- 5.编写函数,模拟标准库itertools中cycle()函数的功能。
- 6.编写函数,模拟标准库itertools中count()函数的功能。
- 7.编写函数,模拟内置函数revered()的功能。
- 8.编写函数,模拟内置函数all()的功能。
- 9.编写函数,模拟内置函数any()的功能。
2.编写函数,实现辗转相除法,接收两个整数,返回两个整数的最大公约数。
def gcd(n,m):
if m>n:
n,m=m,n
p=n*m#这里为求最小公倍数做准备
while m!=0:#辗转思想是逐渐使分母、分子变小
r=n%m
n=m
m=r
return (n,p//n)#这里返回了一个元组,包含了最大公约数和最小公倍数
print(gcd(12,15))
3.编写函数,接收参数a和n,计算并返回形式如 a+aa+aaa+aaaa+ …+aaa…aaa的表达式前n项的值,其中为小于10的自然数
#define Power Function
def Power(x,n):
power=1
while n!=0:
power=power*x
n=n-1
return power
def sum_a(a,n):
sum=0
i=0
for i in range(n):
''''推导过程:
sum=sum+1*a*n
sum=sum+10*a*(n-1)
sum=sum+100*a*(n-3)
.
.
.
不难发现,10的幂加上n的变化数字为一个常数(原来的n)''''
sum=sum+Power(10,i)*a*(n-i)
print(sum)
return str(sum)
print(sum_a(5,3))
4.编写函数,接收一个字符串,判断该字符串是否回文。所谓回文是指,从前向后读和从后向前读是一样的
#最简单的方法是:使用Python的切片str2=str[::-1],再判断str2==str就行了
def Palindrome1(str1):
'''循环,首尾检查'''
length = len(str1)
for i in range(length//2+1):
if text[i] != text[length-1-i]:
return '非回文'
return '回文'
str1=input("请输入str1:")
print(Palindrome1(str1))
5.编写函数,模拟标准库itertools中cycle()函数的功能。
def MyCycle(iterable):
while True:
for item in iterable:
yield item
c=MyCycle('abcd')
for i in range(20):
print(next(c))#取myCycle中的下一个字母
6.编写函数,模拟标准库itertools中count()函数的功能。
def MyCount(start,step):
while True:
yield start
start=start+step
c=MyCount(3,2)
for i in range(20):
print(next(c))
7.编写函数,模拟内置函数revered()的功能。
print("================================")
def MyReversed(lst):
for item in lst[::-1]:
yield item
lst =list(range(5))
r=MyReversed(lst)
print(lst)
print(next(r))
print(next(r))
print(next(r))
print(next(r))
print(next(r))
print("================================")
8.编写函数,模拟内置函数all()的功能。
def MyAll(iterable):
for item in iterable:
if not item:
return False
return True
print("================================")
9.编写函数,模拟内置函数any()的功能。
def MyAny(iterable):
for item in iterable:
if item:
return True
return False