Python经典编程30例_第1页
Python经典编程30例_第2页
Python经典编程30例_第3页
Python经典编程30例_第4页
Python经典编程30例_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档Python经典编程30例全部代码均在python3.7环境下调试通过,为了防止排版缘由导致不能正常运行,供应了正常运行状况下的代码截图。1、编写程序,求1n之间的素数列表def sushu(x): i=0 for i in range(2,x): if x % i =0: return False break if i+1=x: return True return Falsen=int(input("请输入n:")for j in range(2,n): if sushu(j)=True: print(j,"是素数")2、编写程序,生成一个包

2、括100个随机整数的列表,然后从后向前删除全部素数import randomdef sushu(x): i=0 for i in range(2,x): if x % i =0: return False break if i+1=x: return True return Falses=i=0for i in range(0,30): s.append(random.randint(1,10000)for i in range(0,30): print(si," ",end='') if i % 10 =0: print("n")pri

3、nt("n")print("T列表")t=for j in range(29,0,-1): if sushu(sj)=False: t.append(sj)for i in range(0,len(t)-1): print(ti," ",end='') if i % 10 =0: print("n")3、编写程序,当用户从键盘输入整数后,对其进行因式分解(即素数的积)。如100=2*2*5*5n = int(input("请输入待分解的整数n=?")x = 1flag = Tru

4、eif n > 1000:#推断大于1000的数 print("请输入不超过1000的整数")if n > 1 and n <= 1000: print("=".format(n), end='') while n != 1: x += 1 while n % x = 0: n /= x if flag: flag = False print(x, end='') else: print("*".format(x), end='')elif n = 1: print(&

5、quot;1=1")elif n = 0:print("0=0")4、编写程序,验证100以内整数的哥德巴赫的猜想:任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和。如10=5+5, 12=5+7def isprime(x): if x=2: return True if x%2=0: return False n=3 while n*n<=x: if x%n=0: return False n+=2 return Truedef gedb(x): if x<4 or x%2!=0: print("输入的数据不正确,应当是大于或等于

6、4的偶数") return if x=4: print('4=2+2') return for n in range(3,x,2): if isprime(n) and isprime(x-n): print(x,'=',n,'+',x-n) returndef main(): x=int(input("输入大于或等于4的偶数") gedb(x)main()5、编写程序,输出全部由1、2、3、4这4个数字组成的素数,并且在每个素数中每个数字只使用一次。def isprime(x): if x=2: return Tr

7、ue if x%2=0: return False n=3 while n*n<=x: if x%n=0: return False n+=2 return Truedef exercise3_5(): s=0 for i in range(1,5): for j in range(1,5): for k in range(1,5): for l in range(1,5): if (i!=j) and (i!=k) and (i!=l) and (j!=k) and (j!=l) and (k!=l): s=i*1000+j*100+k*10+l if isprime(s)=True:

8、 print(s)exercise3_5()6、编写程序,求全部水仙花数。水仙花数是指一个三位数,其个位、十位、百位3个数字的立方和等于这个数本身。并断定有没有四位数的水仙花数?t=0s=0 #统计水仙花数的个数for i in range(100,1000): j=int(i/100) k=int(i-100*j)/10) l=i-j*100-k*10 if i=j*j*j+k*k*k+l*l*l: print(i) s+=1print(s)for i in range(1000,10000): j=int(i/1000) k=int(i-1000*j)/100) l=int(i-j*100

9、0-k*100)/10) m=i-1000*j-100*k-10*l if i=j*j*j+k*k*k+l*l*l+m*m*m: t+=1 print(i)if t=0: print("No such number")7、编写程序,生成一个包含100个随机数的列表,然后运用切片方法对其中偶数下标的元素进行降序排列,奇数下标的元素不变。解法一:import randomlist_1=#生成随机整数列表for i in range(20): list_1.append(random.randint(0,100) print('生成的列表为:',list_1) #

10、从首位开头索引下标为偶数位元素for i in range(0,len(list_1),2): #从上一个偶数位的下一个偶数位元素开头索引 for u in range(i+2),len(list_1),2): #防止索引超出范围 if i< len(list_1)-2: #比较索引元素大小 if list_1i<=list_1u: #互换元素位置 list_t=list_1i list_1i=list_1u list_1u=list_tprint('排序后列表为:',list_1)解法2:import randomrandom.seed()lst=random.r

11、andint(0,101) for i in range(20)print(lst)def bubble_sort(lst): n=len(lst) for i in range(n/2): for j in range(0,n-i-2,2): if lstj<lstj+2: lstj,lstj+2=lstj+2,lstjbubble_sort(lst)print(lst)8、编写程序,输入行数,输出一个如下图所示的由“*”构成的等腰三角形(提示:用setw()函数)。for i in range(6): for k in range(5-i): print(" ",

12、end=" ") for j in range(2*i+1): print("*", end=" ") print()9、编写程序,A、B、C、D、E共5人夜里去捕鱼,很晚才各自找地方休息。日上三竿,A第1个醒来,他将鱼均分成5份,把多余的一条扔掉,拿走自己的一份。B第2个醒来,他也将鱼均分成5份,将多余的1条扔掉,拿走自己的一份。C、D、E如此类推。问他们合伙至少捕了多少条鱼?解法一设总共捕了x条鱼,每个人看到的鱼共有Xn条, 则:X1=xX2=(X1-1)/5*4X3=(X2-1)/5*4X4=(X3-1)/5*4X5=(X4-1

13、)/5*4其中,(Xn-1)%5=0必定成立,即题中所提到的,扔掉一条,取五分之一。那么就有x,使得递推所得到的项满足(Xn-1)%5=0即可。def fish(n, x): if (x - 1) % 5 = 0: if n = 1: return 1 else: return fish(n - 1, (x - 1) / 5 * 4) return 0x = 6while True: x += 5 if fish(5, x) = 1: print(x) breakfor i in range(1, 6): print("第0人看到的鱼有1条".format(i, x)x =

14、 int(x - 1) / 5 * 4)解法二 反向递推法:解决E和D的问题(规模为2),就可以解决D和C的问题,也就是E、D、C的问题(规模为3),最终解决全部问题。 由X(n+1)=(Xn-1)/5*4得,Xn=X(n+1)*5/4+1fish = 0, 0, 0, 0, 1i = 0while True: fish4 += 5 for i in range(3, -2, -1): if fishi + 1 % 4 != 0: break fishi = int(fishi + 1 * 5 / 4 + 1) if fishi % 5 != 1: break if i=-1: br

15、eakprint("总共捕了",fish0,"条鱼")for i in range(0, 5):print("第0人看到1条鱼".format(i+1, fishi)10、编写程序,计算斐波拉契数列的后项与前项的比:1/1,2/1,3/2,5/3,8/5,13/8,.第n项的值,并观看随着n的增加,比值趋向什么值?def fblq(x): if x=1 or x=2: return 1 else: return fblq(x-1)+fblq(x-2)for k in range(1,30): print(fblq(k+1)/fblq(

16、k)11、编写程序,计算卢卡斯数列的后项与前项的比:1/2,3/1,4/3,7/4,11/7,18/11,.第n项的值,并观看随着n的增加,比值趋向什么值?卢卡斯数列的定义为:L(1)=2,L(2)=1,L(n)=L(n-1)+L(n-2) (n>=2),前9个数为:2、1、3、4、7、11、18、29、47def LKS(x): if x=1: return 2 elif x=2: return 1 else: return LKS(x-1)+LKS(x-2) for k in range(1,30): print(LKS(k+1),"/",LKS(k),"

17、;=",LKS(k+1)/LKS(k)12、编写函数,用于推断输入的字符串是否由字母和数字构成,并统计字符个数。解法一import stringdef chartype(ch): """字符类型推断""" if ch in string.ascii_letters: return 'ascii_letters' elif ch in string.digits: return 'digits' elif ch in string.whitespace: return 'whitespa

18、ce' else: return 'other' def chtypecount(s): """字符串类型计数器""" counter = for ct in map(chartype, s): counter.setdefault(ct, 0) counterct += 1 return counter for chtype, cnts in chtypecount(input("Enter a string: ").items(): print (chtype, cnts)解法二sum_

19、d=0sum_alpha=0sum_other=0sum_chinese=0#s="123 abc def 中klGD国 abcde 宏大"s=input("请输入字符串:")for i in range(0,len(s): if '0'<=si<='9': sum_d+=1 elif 'a'<=si<='z': sum_alpha+=1 elif 'u4e00' <= si <= 'u9fff': sum_chinese+

20、=1 else: sum_other+=1print("数字:",sum_d,"个")print("字母:",sum_alpha,"个")print("其他符号:",sum_other,"个")print("汉字:",sum_chinese,"个")13、编写程序,计算字符串中单词的个数。str = input("请您输入一串字符串:")str1 = str.strip() # 去掉字符串前后空格index = 0c

21、ount = 0while index < len(str1): while str1index != " ": # 当不是空格是,下标加1 index += 1 if index = len(str1): # 当下标大小跟字符串长度一样时结束当前循环 break count += 1 # 遇到空格加1 if index = len(str1): # 当下标大小跟字符串长度一样时结束当前循环 break while str1index = " ": # 当有两个空格时,下标加1,防止以一个空格算一个单词 index += 1print("

22、输入的字符串中一共有count = %d个单词" % count)14、编写程序,用户输入一个字符串,将偶数下标位的字符提出来合成一个串A,再将奇数下标位置的字符提取出来合成串B,再将A和B连接起来输出。c=input("请输入字符");A=""B=""for a in c:2: A=A+afor b in c1:len(c):2: B=B+bn=A+Bprint(n)15、编写程序,统计字符串中消灭的每个字母消灭次数,并输出成一个字典,如a:3,A:5,b:2#a = "aAsmr3idd4bgs7Dlsf9eA

23、F"a=input("请输入字符串:")def fun1_2(x): #1&2 # x = x.lower() #大小写转换 num = dic = for i in x: if i.isdigit(): #推断假如为数字,请将a字符串的数字取出,并输出一个新的字符串 num.append(i) else: #2 请统计a字符串消灭每个字母的消灭次数(忽视大小写),并输出一个字典。例:'a':3,'b':1 if i in dic: continue else: dici = x.count(i) new = '&#

24、39;.join(num) print ("the new numbers string is: " + new) print ("the dictionary is: %s" % dic)fun1_2(a)def fun3(x): x = x.lower() new3 = for i in x: if i in new3: continue else: new3.append(i) print (''.join(new3)fun3(a)16、编写程序,统计字符串中消灭的每个单词消灭次数,并输出成一个字典。解法一str1 = "

25、tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day"list1 = str1.split(" ")dict1 =for element in list1: if element not in dict1: dict1element = 1 else: dict1element += 1print(dict1)解法二str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day&qu

26、ot;list1 = str1.split(" ")dict1 =for element in list1: value = dict1.get(element) #假如不存在则返回None if value = None: dict1element = 1 else: dict1element += 1print(dict1)17、编写程序,将输入的一串字符从前到后每个字符向后移动一位,最终一个字符存放到第一个位置,并输出结果。arr=r=""m=input("请输入")for string in m: arr.append(str

27、ing)last=arr-1arr.insert(0,last)arr.pop()for str in arr: r=r+strprint(r)18、编写程序,把一段英文中字母“a”改写成“A”#输入一串字符,将大写字母转换成小写字母,小写字母转换为大写字母def LtoU(): a = input("请 输入字符:") b = for n in a : if "a"<= n <= "z": b.append(n.upper() elif"A" <= n <= "Z" :

28、 b.append(n.lower() else: b.append(n) print("".join(b)def aToA(): a = input("请 输入字符:") b = for n in a : if n = "a": b.append(n.upper() else: b.append(n) print("".join(b)aToA()19、编写程序,把一段英文中每句话的首个单词的第一个字母改为大写。def convert_initial(old: str) -> str: new = "

29、;" i = 0 while i < len(old): if (i = 0) or (oldi - 1 = " "): new += oldi.upper() else: new += oldi i += 1 return new#print(convert_initial("I am a teacher, and you are student.")s=input("请输入一个英文句子:")print(convert_initial(s)20、编写程序,将一段英文中有连续重复的单词只保留一个。l = s = &qu

30、ot;hello world hello python"for i in s.split(" "):if i not in l:l.append(i) result = " ".join(l)print(result)print()def onlyOne(x): m= print(x) for j in x.split(" "): if j not in m: m.append(j) result =" ".join(m) return resultt=input("请输入一个英文句子:&quo

31、t;)print(onlyOne(t)21、编写程序,输入一段英文,输出英文中全部长度为3个字母的单词。import rex = input('Please input a string:')pattern = pile(r'ba-zA-Z3b')print(pattern.findall(x)22、编写程序,输入一段英文,输出字符数最多的单词。import rewords=input("Input the words:")l=re.split('. +',words) #使用空格分隔词语,得到各个单词print(l)i=0

32、#这里我设置的是计数器s=""for i in l: if len(i)>len(s): #假如单词的长度为3 输出 s=i else: print('')print(s)23、编写程序,要求输入一段英文,以及此段中的一个单词和另外一个单词,然后显示用其次个单词替换第一个单词后的句子。str='The weather today is really good.'fword=input('请输入要查找的单词')rword=input('请输入要替换的单词')c=str.count(fword)if c>

33、;0: str=str.replace(fword,rword) print('替换后的句子为:',str)else: print('句子中没有要查找的单词')24、编写自定义函数,实现从屏幕输入3个数,并求出其中最大值。def myfun(): s= for i in range(0,3): t=int(input("请输入一个数:") s.append(t) print(max(s) print(s)myfun()25、编写函数,仿照内置函数sort()s=1,-3,2,6,8,11,-5,28,88t=def mysort(x): fo

34、r i in range(0,len(x): t.append(min(x) x.remove(min(x) return tprint(mysort(s)26、编写函数,求出之和,函数形参为n,n由用户在主函数中输入。def jiecheng(x): if (x=0) or (x = 1): return 1 else: return x*jiecheng(x-1)def mySum(n): mysum=0 for i in range(0,n+1): mysum+=1/jiecheng(i) return mysumk=int(input("请输入一个数:")print

35、(mySum(k) 27、编写程序,运用递归方法推断一个数是否为回文数。a = input("请输入一个数:")if a.isdigit(): a = str(a) for i in range(len(a): if ai = alen(a)-i-1: print(a,"是回文数") else: print(a,"不是回文数") breakelse: print("请输入自然数:")28、编写程序,运用递归方法分别求出斐波拉契数列和卢卡斯数列前n项之和,n由用户在主函数中输入。def fblq(x): if (x=1) or (x = 2): return 1 else: return fblq(x-1)+fblq(x-2)def LKS(x): if x=1: return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论