练习1:
写一个函数myadd, 此函数可以计算两个数,三个数,及四个数的和
def myadd(.....):
....
print(myadd(10, 20)) # 30
print(myadd(100, 200, 300)) # 600
print(myadd(1, 2, 3, 4)) # 10
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def myadd(a,b,c = 0,d = 0 ): sum = a +b + c + d return sum print(myadd(10,20)) print(myadd(100,200,300)) print(myadd(1,2,3,4))
练习2:
写一个函数mysum 可以传入任意个实参的数字,返回所有实参的和
def mysum(*args):
....
print(mysum()) # 0
print(mysum(1, 2, 3, 4)) # 10
要求: 不允许调用内建函数sum
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def mysum(*args): sum = 0 for i in args: sum += i return sum print(mysum(1,2,3,3,3)) print(mysum(10,30,50,48))
练习3:
已知内建函数max帮助方档为:
max(iterable)
max(arg1, arg2, *args)
仿造max, 写一个mymax函数,功能与max完全相同
(要求不允许调用max函数)
print(mymax([6, 8, 3, 5])) # 8
print(mymax(100, 200)) # 200
print(mymax(1, 3, 9, 5, 7)) # 9
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#方法一 def my_max(*args,**kwargs): if len(args) == 1: iterable = args[0]#取出该数值 max1 = iterable[0] for i in iterable:#循环判断最大值 if i > max1: max1 =i return max1 elif len(args) > 1: max1 = args[0]#当里面数值大于1时 for i in args: if i > max1: max1 = i return max1 print(my_max([1,2,3])) print(my_max((1,2,32))) print(my_max(1,2,31)) #有没有不完善的地方?? 当输入print(my_max())时候......, 结果为None?为什么 #升级版 def my_max(a,*args):#默认传入一个值, if len(args) == 0: max1 = a[0] for i in a: if i > max1: max1 =i return max1 elif len(args) >= 1: max1 = a for i in args: if i > max1: max1 = i return max1 print(my_max([1,2,3])) print(my_max((38,2,32))) print(my_max(38,2,31)) # print(my_max())#若为空,报错 understand???
练习4
写一个函数 get_chinese_char_count(s) , 此函数返回
一个字符串s中所有中文字符的个数
def get_chinese_char_count(s):
...
s = input("请输入中英文混合的字符串: ")
print("您输入的中文字符的个数是:",
get_chinese_char_count(x))
注:
中文编码范围是: 0x4E00 ~ 0x9FA5(包含)
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #方法一 2 def get_chinese_char_count(s): 3 l = [] 4 for i in s: 5 if chr(0x4E00) <= i <= chr(0x9FA5): 6 l.append(i) 7 return len(l) 8 s = input("输入中英文字混合的字符串:") 9 print("您输入的中文字符个数是",get_chinese_char_count(s)) 10 11 #方法二 12 def get_chinese_chr_count(s): 13 count = 0 14 for i in s: 15 if 0x4E00 <= ord(i) <= 0x9FA5: 16 count += 1 17 return count 18 19 x = input("输入") 20 print(get_chinese_chr_count(x))
练习5 素数的练习
1). 写一个函数 isprime(x) 判断x是否是素数,如果为素数则返回
True, 否则返回False
2). 写一个函数 prime_m2n(m, n) 返回从m开始,到n结束范围内
的素数(不包含n), 返回这些素数的列表,并打印
如:
L = prime_m2n(10, 20)
print(L) # [11, 13, 17, 19]
3.) 写一个函数primes(n), 返回指定范围内n(不包含n)的全部素
数的列表,并打印这些素数的列表
L = primes(10)
print(L) # [2, 3, 5, 7]
1) 打印100 以内的全部素数
2) 打印 100 ~ 200之间全部素数的和
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #1) 2 def isprime(x): 3 for i in range(2,x): 4 if x % i == 0: 5 return False 6 return True 7 8 print(isprime(3))#Ture 9 print(isprime(6))#False 10 11 #2) 12 def prime_m2n(m,n): 13 l = []#创建列表存储素数 14 for i in range(m,n): 15 if isprime(i) is True: 16 l.append(i) 17 return l 18 L = prime_m2n(5,20) 19 print(L) 20 #你以为这就够了?还有更牛逼的!!! 21 def prime_m2n(m,n) 22 return [x for x in range(m,n) if prime(x)] 23 print(prime_m2n(10,20)) 24 #一行代码,震惊了吧,列表推导式,强!! 25 #3) 26 def primes(n) 27 return prime(0,n)#利用已经定义好的prime_m2n函数,直接得出 28 print(primes(20)) 29 print(sum(primes(20)))