分享缩略图

分享到:
链接已复制
首页> 新闻中心>

Python100道练习题

2025-06-24 12:33:25

来源:新华网

字体:

Python100道练习题

BIlibili

1、两数之和

num1 =20num2 =22result =num1 +num2print(result)

2、一百以内的偶数

list1 =[]fori inrange(1,100):ifi %2==0:list1.append(i)print(list1)

3、一百以内的奇数

# 方法一list1 =[]fori inrange(1,100):ifi %2!=0:list1.append(i)print(list1)# 方法二list2 =[i fori inrange(1,100)ifi %2!=0]print(list2)# 方法三list3 =[i fori inrange(1,100,2)]

4、判断素数

编写程序,判断某一个数是否为素数。所谓素数指的是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数:

a =37flag =Truefori inrange(2,a):# 注意range 是左闭右开ifa %i ==0:flag =Falsebreak# 一旦判断成功后,后面就没必要继续了ifflag:print('a不是素数')else:print('a是素数')

5、求阶乘

编写程序,求出某个自然数的阶乘。一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!

a =5# 方法一ifa ==0ora ==1:print('阶乘为: 1')else:sum=1fori inrange(2,a+1):# 包括本身sum*=i    print('阶乘为:',sum)# 方法二 递归deffun(x):ifx ==1:return1else:returnx *fun(x -1)print(fun(a))# 方法三 math.factorial()importmathprint(math.factorial(a))

6、求圆的周长

程序编写:输入半径,求出圆的周长

圆的周长:2πr

importmathr =float(input('请输入圆的半径:'))girth =2*r *math.piprint('周长是',round(girth,2))# round 保留两位小数

7、求圆的面积

程序编写:输入半径,求出圆的面积

圆的周长:πrr

importmathr =float(input('请输入圆的半径:'))girth =r *r *math.piprint('面积是',round(girth,2))# round 保留两位小数

8、求直角三角形斜边的边长

编写程序:输入两个直角边,求出三角形斜边的长度

勾股定理:a2+ b2= c2

importmatha =3b =4cfang =math.pow(a,2)+math.pow(b,2)# 或者 math.pow(cfang,0.5) or cfang ** 0.5print('三角形斜边的长度: ',math.sqrt(cfang))

9、比较三个数大小

编写程序:输入三个数,从小到大输出三个数

a =int(input('请输入第一个数:'))b =int(input('请输入第二个数:'))c =int(input('请输入第三个数:'))lst =[a,b,c]# 方法一:list.sort() ,sort(reverse=False) 默认False 升序lst.sort()print(lst)# 方法二:sorted(lst)list1 =sorted([a,b,c])print(list1)

10、找出区间内的素数

编写程序,输入整数a、b表示一个闭区间,找出该区间内的所有素数并打印。

# 判断素数函数defprime(x):flag =Truefori inrange(2,x):ifx %i ==0:flag =Falsebreakreturnflag# 闭区间a =10# 左端点b =20# 右端点num_list =[]fori inrange(a,b+1):ifprime(i):num_list.append(i)print(num_list)

11、组合数字

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

# 方法一str1 ='1234'fori instr1:forj instr1:fork instr1:ifi ==j ori ==k orj ==k:continueprint(i+j+k)# 方法二fori inrange(1,5):forj inrange(1,5):fork inrange(1,5):ifnot(i ==j ori ==k orj ==k):print(f'{ i}{ j}{ k}')

12、打印乘法口诀表

fori inrange(1,10):forj inrange(1,i+1):print(f'\t{ j}* { i}= { i *j}',end=' ')print()

13、水仙花数

水仙花数:是一个三位数,各位数字立方和等于该数字本身。

importmath# 水仙花数:是一个三位数,各位数字立方和等于该数字本身。num_list =[]fori inrange(100,1000):hundred =i //100ten =i //10%10piece =i %10if(math.pow(hundred,3)+math.pow(ten,3)+math.pow(piece,3))==i:num_list.append(i)print(num_list)

14、反向输出四位数

编写程序,输入一个四位整数,反对输出对应四位数

# 编写程序,输入一个四位整数,反对输出对应四位数st =input('请输入一个四位数')st =st[::-1]print(int(st))

15、判断字母

编写程序,输入字符,判断是否为字母

# 编写程序,输入字符,判断是否为字母a = input('请输入字符: ')result = a.isalpha()  #  判断字母if result:    print(f'{ a}是字母')else:    print(f'{ a}不是字母')

16、判断三角形

编写程序,输入三组数据,判断能否构成三角形的三条边

a,b,c =[4,5,6]ifa <=0orb <=0orc <=0:print('输入的数据不合法')ifa +b <c ora +c <b orb +c <a:print('不构成三角形')else:print('构成三角形')

17、完数

个数如恰好等于除了它以外的因子之和,这个数就称为“完数”。编程序找出1000以内的所有完数,(6是一个"完数",它的因子是1,2,3)。

fori inrange(1,1000):sum=0forj inrange(1,i):ifi %j ==0:sum+=j    ifsum==i:print(i,'是完数')

18、找出质数因子

输入一个正整数,输出它的所有质数因子(如180的质数因子为2、2、3、3、5)。

多个素数的乘积

从第一个数开始,也就是说从2开始,整除一下输入的数

a =int(input('请输入一个自然数:'))y =2list1 =[]whilea !=y:ifa %y ==0:list1.append(y)a /=y    else:y +=1list1.append(int(a))# 最后剩下的aprint(list1)

19、海伦公式求三角形面积

海伦公式是利用三角形的三条边的边长直接求三角形面积的公式

p = ( a + b + c ) / 2 p = (a+b+c)/2 p=(a+b+c)/2

S = p ( p − a ) ( p − b ) ( p − c ) S = \sqrt{ p(p-a)(p-b)(p-c)} S=p(pa)(pb)(pc)

importmatha =10b =10c =10p =(a+b+c)/2S =math.sqrt(p *(p-a)*(p-b)*(p-c))print('三角形的面积是:',round(S,2))

20、判断某年某天

输入某年某月某日,判断这一天是这一年的第几天

importdatetime# map 把年月日都转成 int类型year,month,day =map(int,input('请输入年月日: ').split('-'))# 拿到当年的第一天yundan =datetime.datetime(year,1,1)#now =datetime.datetime(year,month,day)print((now -yundan).days +1)

21、斐波那契数列

# 递归deffib(x):ifx ==1orx ==2:return1else:returnfib(x-1)+fib(x-2)print(fib(6))# 非递归n =6fibs =[1,1]fori inrange(2,n):# fibs.append(fibs[-1] + fibs[-2])fibs.append(fibs[i -1]+fibs[i -2])print(fibs[n-1])

22、复制列表

将一个列表中的数据,复制到另一个列表中

importcopylist1 =[1,2,3,4]list2 =copy.copy(list1)print(list2)list1 =[1,2,3,4]lsit2 =list1.copy()print(lsit2)

23、暂停后输出

暂停一段时间后输出

import timetime.sleep(1) # 以秒为单位print("Hello Python! ")

24、成绩if语句

利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

score =int(input('请输入你的成绩: '))flag =''ifscore >=90:flag ="A"elifscore >=60:flag ="B"else:flag ='C'print(flag)

25、统计字符

输入一行字符,分别统计出其中英文字母空格、数字和其它字符的个数。

# 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。string =input('请输入一段字符串:')char,space,number,other =0,0,0,0# 方法一fori instring:if'a'<=i <='z'or'A'<=i <='Z':char +=1elifi ==' ':space +=1elif'0'<=i <='9':number +=1else:other +=1# 方法二:fori instring:ifi.isalpha():# 判断字符串char +=1elifi.isdigit():# 判断数字number +=1elifi.isspace():# 判断空格space +=1else:other +=1print(f'英文字母有{ char}个,数字有{ number}个,空格有{ space}个,其他字符有{ other}个。')

26、落体反弹问题

球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

n =100count =0list1 =[]# 方法一whilecount <10:ifcount ==0:# 第一次弹跳,马上要落下来list1.append(n)n /=2count +=1else:list1.append(2*n)# 这是一个 上下的距离n /=2count +=1print(sum(list1))# 方法二# 球的高度height =100# 落地的次数frequency =10sum=0fori inrange(1,frequency):sum+=height  # 落下height /=2sum+=height  # 上来print(f'第{ i}次下落,高度为:{ height}')print(sum)

27、猴子吃桃问题

猴子吃桃问题:猴子第一天摘下若干个桃子当即吃了一半,还不瘾,又多吃了一个第天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少

# 每天吃了 一半 + 1, 第十天就剩下1个了, 求第一天摘了多少x =1fori inrange(1,10):x =(x +1)*2print(x)

28、求指数数列的和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

# 方法一fibs =[1,1]fori inrange(20):fibs.append(fibs[-1]+fibs[-2])sum=0fori inrange(2,22):sum+=fibs[i]/fibs[i-1]print(sum)# 方法二sum=0# 最后的结果up =2# 分子down =1# 分母fori inrange(20):sum+=up/down    up,down =down +up,upprint(sum)

29、求各个阶乘的和

求1+2!+3!+…+20!的和.

sum=1# 方法一fori inrange(2,21):target =1forj inrange(1,i +1):# 阶乘包括本身target *=j    sum+=targetprint(sum)importmathsum=0fori inrange(1,21):sum+=math.factorial(i)print(sum)

30、年龄急转弯

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

deffunc(n):ifn ==1:return10else:returnfunc(n -1)+2print(func(5))

31、判断回文数

输入一个数,判断它是不是回文数。12321是回文数,个位与万位相同,十位与千位相同。

number ='12321'# 方法一ifnumber[0]==number[-1]andnumber[1]==number[-2]:print(True)else:print(False)# 方法二number =int(number)w =number //10000q =number //1000%10ten =number %100//10g =number %10ifq ==ten andw ==g:print('是回文数')else:print('不是回文数')# 方法三a ='12321'b =a[::-1]# 字符串反转ifa ==b:print('是回文数')else:print('不是回文数')

32、判断星期几

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
星期一 Monday、星期二 Tuesday、星期三Wednesday、星期四Thursday、星期五 Friday 、星期六 Saturday、星期日Sunday.

weekdays =["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]first_letter =input("请输入星期几的第一个字母(大写):")matched_days =[]forday inweekdays:ifday[0]==first_letter:matched_days.append(day)iflen(matched_days)==1:print("是",matched_days[0])eliflen(matched_days)>1:second_letter =input("有多个匹配,请输入第二个字母(小写):")final_matched =[]form_day inmatched_days:iflen(m_day)>1andm_day[1]==second_letter:final_matched.append(m_day)iflen(final_matched)==1:print("是",final_matched[0])else:print("无法准确判断,请输入更详细信息")

33、相反顺序输出列表

按相反的顺序输出列表的值。

list1 =[1,2,3,4,5,6,7]list1.reverse()# 对原本的数据进行修改,没有返回值# 方法一print(list1)# 方法二print(list1[::-1])

34、对十个数进行排序

对十个数进行排序

a =map(int,input('请输入10个数字').split())a =list(a)a.sort()print(a)

35、求矩阵主对角线元素之和

求一个3*3矩阵主对角线元素之和

a =[]index =0sum=0fori inrange(3):a.append([])forj inrange(3):index +=1a[i].append(index)# 求对角线元素之和ifi ==j:sum+=a[i][j]print(a)print(sum)# 方法二importnumpy asnparr =np.arange(9).reshape(3,3)sum_list =np.diagonal(arr)# 把对角线取出来print(sum(sum_list))

36、有序列表添加数据

有一个已经排好的序列。现输入一个数,要求按原来的规律将它插入数组中。

list1 =[1,3,8,10,20,50]n =int(input('请输入数据:'))iflist1[0]<list1[-2]:list1.append(n)list1.sort()else:list1.append(n)list1.sort(reverse=True)print(list1)

37、变量值互换

a =5b =10# 方法一a,b =b,a# 方法二temp =aa =bb =temp

38、产生随机数

生成随机数

importrandoma =random.random()# [0,1) floatb =random.randint(1,10)# [1,10] intc =random.randrange(1,10,3)# 比 randint 多了一个步长print(a,b,c)

39、lambda表达式

使用lambda来创建匿名函数

fun =lambdax,y:x **yprint(fun(2,4))

40、温度转换

输入摄氏度,将其转为华氏度

输入华氏度,将其转为摄氏度。

华氏温度与摄氏温度转换公式为:

华氏温度=摄氏温度x1.8+32。

a =input('摄氏度请按1,华氏度请按2: ')ifa =='1':b =float(input('请输入摄氏度: '))result =b *1.8+32print(f'你输入的是摄氏度{ b}, 转换为华氏度是{ result}')ifa =='2':b =float(input('请输入华氏度: '))result =(b -32)/1.8print(f'你输入的是华氏度{ b}, 转换为摄氏度是{ result}')

41、按位与

# 运算规则: 0&0=0 0&1=0  1&0=0  1&1=1'''3 => 00115 => 01013 & 5 => 0001  => 14 => 010012 => 11004 & 12 => 0100  =>4'''print(3&5)# 1print(4&12)# 4

42、按位或

# 运算规则: 0|0=0, 0|1=1, 1|0=1, 1|1=1'''3 => 00117 => 01113|7 => 0111 => 7'''print(3|7)# 7

43、按位异或

# 相同为0,不同为1# 0^0=0  0^1=1  1^0=1  1^1=0'''3 => 00119 => 10013^9 => 1010 => 10'''print(3^9)# 10

44、按位取反

# 按位取反运算符(~): 对数据的每个二进制位取反,即把0变成1,把1变成0# ~x = -(x+1)'''9 => 00001001  => 11110110  => 10001001  => 10001010 在这里加1  => -10'''print(~9)# -10print(~10)# -11print(~(-3))# 2# 用十进制计算:正变负,负变正,然后减1

45、计算机字符串的长度

a =input()print(len(a))length =0fori ina:length +=1print(length)

46、杨辉三角

a =[]# 外围fori inrange(10):a.append([])forj inrange(10):a[i].append(0)fori inrange(10):a[i][0]=1a[i][i]=1fori inrange(2,10):forj inrange(1,i):a[i][j]=a[i-1][j]+a[i-1][j-1]fori inrange(10):print()forj inrange(i+1):print(a[i][j],end='  ')

47、查找字符串

a ='Hello World!'b ='World'print(a.find(b))

48、猜数字游戏

importrandomtarget =random.randint(0,99)times =7print('猜数字游戏开始,请猜一百以内的整数~')whiletimes !=0:num =int(input('请输入你要猜的数字: \n'))times -=1ifnum <target:print('猜小了')elifnum >target:print('猜大了')else:print(f'恭喜你才对了,答案是{ target}')iftimes ==0:print('很遗憾,机会用完了.')

49、第一个只出现一次的字符

在一个字符串中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回 -1(需要区分大小写).(从0开始计数

string ='Hello World'a =-1# 默认为 -1mp =dict()fori instring:ifi inmp:mp[i]+=1else:mp[i]=1fori inrange(len(string)):ifmp[string[i]]==1:a =i        breakprint(a)

50、最大公因数

求最大公因数

deffun1(a,b):# 枚举ifa ==b:# 如果两个数一样的话,那么就是他们本身returna    num =min(a,b)# 记录最小的whilea %num !=0orb %num !=0:num -=1returnnumprint(fun1(12,18))deffun2(a,b):whileb !=0:# 除法求余a,b =b,a %b    returnaprint(fun2(12,18))

【责任编辑:新华网】
返回顶部