Python 数学练习题 您所在的位置:网站首页 铁路里程计算题 Python 数学练习题

Python 数学练习题

2023-12-06 17:29| 来源: 网络整理| 查看: 265

                 目      录 实例001:数字求和 实例002:寻找素数  实例003:数字阶乘 实例004:水仙花数 实例005:玫瑰花数 实例006:马匹驮货 实例007:神秘数字 实例008:卡普雷卡 实例009:幸运盒子 实例010:幸运数字 实例011:鸡兔同笼 实例012:米粒棋盘 实例013:自守数字 实例014:等差数和 实例015:等比数和 实例016:斐波那契 实例017:大衍数列 实例018:卢卡斯数 实例019:佩尔数列 实例020:帕多瓦数 实例021:卡特兰数 实例022:兴趣数字 实例023:神秘数字Ⅰ 实例024:神秘数字Ⅱ 实例025:神秘数字Ⅲ 实例026:寻找数字 实例027:猜猜年龄 实例028:计算年龄 实例029:对折面条 实例030:堆垒煤球 实例001:数字求和

题目:请你编写程序计算出1-m的和。例如:1+2+3=6 或 1+3+5=9

num = 0 m = int(input('请你输入终点数字:')) n = int(input('请你输入间隔数字:')) for i in range(1, m + 1, n):     num += i print(num) 实例002:寻找素数 

题目:素数又称质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 例如:2、3、5、7、11、13、17......请你找出100以内的素数。

for x in range(2, 100): for y in range(2, x): if x % y == 0: break else: print(x) 实例003:数字阶乘

题目:请你输入一个正整数,并返回该数字的阶乘是多少?

方法一: n = int(input('请您输入一个正整数:') sum = 1 for i in range(1,n+1):  sum*=i print(sum) 方法二: n = int(input('请您输入一个正整数:')) def a(x): if x == 1: return 1 return x * a(x-1) print(a(n)) 实例004:水仙花数

题目:水仙花数是指一个三位数, 其各位数字3次幂和等于该数本身。 例如:153=1^3+5^3+3^3。

for i in range(100, 1000): x = i // 100 y = i // 10 % 10 z = i % 10 if x ** 3 + y ** 3 + z ** 3 ==i: print(i) 实例005:玫瑰花数

题目:玫瑰花数是指一个四位数, 其各位数字4次幂和等于该数本身。 例如:1634=1^4+6^4+3^4+4^4。

for i in range(1000, 10000): a = i // 1000 b = i % 1000 // 100 c = i % 100 // 10 d = i % 10 if a ** 4 + b ** 4 + c ** 4 + d ** 4 == i: print(i) 实例006:马匹驮货

题目:100匹马驮100担货,大马一匹驮3担, 中马一匹驮2担,小马两匹驮1担, 计算大、中、小马各有多少组合?

for x in range(1, 100): for y in range(1, 100): z = 100 - x - y if 3 * x + 2 * y + z / 2 == 100: print(x, y, z) 实例007:神秘数字

题目:请你找出200-300之间的三位数,各位之积为42,各位之和为12的神秘数字是多少?

for i in range(200, 300): x = x = i // 100 y = y = i // 10 % 10 z = z = i % 10 if x * y * z == 42 and x + y + z == 12: print(i) 实例008:卡普雷卡

题目:数学家卡普雷卡偶然发现铁路旁的里程碑“3025”被雷击得一分为二: 变成30与25,他敏锐地注意到:(30+25)^2=3025。请你找出10000以内的四位卡普雷卡数。

for i in range(1000, 10000):     a = int(str(i)[:2])     b = int(str(i)[2:])     if (a + b) ** 2 == i:         print(i) 实例009:幸运盒子

题目:一个同学抽了一个幸运数字宝盒,工作人员给出了如下提示: 是100以内的奇数、能被7整除、十位数字是个位数字的2倍 编程求这个数字可能是多少?

for i in range(1, 100): if i % 2 == 1 and i % 7 == 0 and (i // 10) / (i % 10) == 2: print(i) 实例010:幸运数字

题目:请你按题目要求找出 1—1000之间的完全幸运数要求如下: 该数是6的倍数、末尾是6、左右对称。

for i in range(1, 1000): if i % 6 == 0 and str(i) == str(i)[::-1] and str(i)[-1] == '6': print(i) 实例011:鸡兔同笼

题目:定义一个函数实现输入鸡兔总头数(h)和总脚数f, 计算当鸡数c和兔数r,如数据不合理,输出无解。

def aaa(h, f): b = f / 2 - h a = h - b if a == int(a) or b == int(b): print('鸡有{}只,兔有{}只'.format(int(a), int(b))) else: print('无解') aaa(21, 55) aaa(21, 66) 实例012:米粒棋盘

题目:在棋盘的第1格放1粒大米,第2格放2粒,第3格放4粒, 之后的每一格中的米粒数目都是相邻前一格的两倍, 一直放到最后的第64格,请你计算第64各中应放多少米?

for i in range(64): x = 2 ** i print('第64格应放米{}粒'.format(x)) 实例013:自守数字

题目:自守数是指一个数的平方的尾数等于该数自身的自然数。 例如:6^2=36、25^2 =625、76^2=5776求1000以内的自守数。

for i in range(1,1000): if str(i**2)[-len(str(i)):]==str(i): print(i) 实例014:等差数和

题目:编写一个等差数列,通用式为:S=n(a1+an)/2 n为数字个数,a1为开始数字,an为结尾数字

a = int(input('请你输入开始数字是:')) b = int(input('请你输入结尾数字是:')) c = int(input('请你输入几个数字和:')) s = int(c * (a + b) / 2) print(s) 实例015:等比数和

题目:编写一个等比数列,通用式为:S=a1(1-q**n)/(1-q) n为数字个数,a1为开始数字,q为公比数字(q≠1)。

a = int(input('请你输入开始数字是:')) q = int(input('请你输入等比公比是:')) n = int(input('请你输入几个数字和:')) if q == 1: print('输入有误,q≠1') else: s = int(a * (1 - q ** n) / (1 - q)) print(s) 实例016:斐波那契

题目:斐波那契数列,又称黄金分割数列, 例如:1、1、2、3、5、8、13、21......, 请找出规律打印输出前20项的斐波那契数列。

方法一: a, b = 0, 1 for i in range(20): a, b = b, a + b print(a) 方法二: def a(x): if x == 1 or x == 2: return 1 else: return a(x - 1) + a(x - 2) for i in range(1, 21): print(a(i)) 实例017:大衍数列

题目:大衍数列,来源于《乾坤谱》中对易传“大衍之数五十”的推论。 数列中的每一项,都代表太极衍生过程中,曾经经历过的两仪数量总和。 是中华传统文化中隐藏着的世界数学史上第一道数列题。 0、2、4、8、12、18、24、32、40、50...... 通项式:(n*n-1)÷2 (n为奇数)、n*n÷2 (n为偶数)

a = [] for i in range(1, 11): if i % 2 == 1: a.append(int((i ** 2 - 1) / 2)) else: a.append(int((i ** 2) / 2)) for i in a: print(i) 实例018:卢卡斯数

题目:卢卡斯数有很多性质和斐波那契数很相似。 如 Ln = Ln-1 + Ln-2,其中不同的是 L1 = 1、 L2 = 3。 所以卢卡斯数有:1, 3, 4, 7, 11, 18, 29, 47, 76, 123, ...... 当中的平方数只有 1 和 4, 卢卡斯数列和斐波那契都是我们以后经常要用到的数列, 对于研究大盘以及个股时间上的结构有至关重要的作用。

a, b = 2, 1 for i in range(10): a, b = b, a + b print(a) 实例019:佩尔数列

题目:佩尔数的数列从0和1开始,从第3个数字开始每一个佩尔数都是前一项两倍再加上前二项。前10个佩尔数是:0, 1, 2, 5, 12, 29, 70, 169, 408, 985......

a, b = 1, 0 for i in range(10): a, b = b, 2 * b + a print(a) 实例020:帕多瓦数

题目:帕多瓦数列是由帕多瓦总结而出的。它的特点为从第四项开始,每一项都是前面2项与前面3项的和。帕多瓦数列是:1,1,1,2,2,3,4,5,7,9,12,16......

a, b, c = 0, 1, 1 for i in range(10): a, b, c = b, c, a + b print(a) 实例021:卡特兰数

题目:卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。 由比利时数学家欧仁·查理·卡塔兰 命名,通项式:(2n)!/((n+1)!*n!) 其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862......

方法一: import math for i in range(10): a = math.factorial(i * 2) b = math.factorial(i + 1) c = math.factorial(i) d = int(a / (b * c)) print(d) 方法二: def a(n): x = 1 for i in range(2, 2 * n + 1): x *= i return x def b(n): y = 1 for i in range(2, n + 2): y *= i return y def c(n): z = 1 for i in range(2, n + 1): z *= i return z for i in range(10): num = int(a(i) / (b(i) * c(i))) print(num) 实例022:兴趣数字

题目:贝贝对数字中包含2、0、1、9的数字很感兴趣,求1~n中包含这几个数字之和是多少?

num_sum = 0 num = int(input('请您输入1~n的数字范围:')) for x in range(1, num + 1): for y in ['2', '0', '1', '9']: if y in str(x): num_sum += x break print(num_sum) 实例023:神秘数字Ⅰ

题目:有一个四位数,各位数字之和等于34,符合这个条件的四位数是?

num = [] for x in range(1000, 10000): ls = [int(y) for y in list(str(x))] if sum(ls) == 34: print(x) 实例024:神秘数字Ⅱ

题目:有一个四位数,个位数字与百位数字的和是12,十位数字与千位数字的和是9, 如果个位数字与百位数字互换,千位数字与十位数字互换,新数就比原数增加2376,求原数。

for i in range(1000, 10000): ls = list(str(i)) if int(ls[1]) + int(ls[3]) == 12 and int(ls[0]) + int(ls[2]) == 9: ls[1], ls[3] = ls[3], ls[1] ls[0], ls[2] = ls[2], ls[0] num = int(''.join(ls)) if num - i == 2376: print(i) 实例025:神秘数字Ⅲ

题目:由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。 例如:210 x 6 = 1260   8 x 473 = 3784   27 x 81 = 2187 都符合要求。一共有多少种满足要求的算式。

num_count = 0 for x in range(1, 1000): for y in range(x, 1000): l1 = list(str(x * y)) l2 = list(str(x) + str(y)) l1.sort() l2.sort() num = 0 for i in l1: if l2.count(i) == 1 and len(l1) == 4 and l1 == l2: num += 1 if num == 4: num_count += 1 print('第{}组 {} * {} = {} '.format(num_count, x, y, x * y)) else: break 实例026:寻找数字

题目:203879 * 203879 = 41566646641, 仔细观察,203879 是个6位数, 它的每个数位上的数字都是不同的, 平方后的所有数位上都不出现组成它自身的数字。 具有这样特点的6位数还有一个,请你找出它。

for x in range(100000, 1000000): a = x ** 2 b = 0 for y in str(x): if y not in str(a) and str(x).count(y) == 1: b += 1 else: break if b == 6: print(x) 实例027:猜猜年龄

题目:一位年轻人年龄的3次方是个4位数、年龄的4次方是个6位数。 这10个数字正好包含了从0到9这10个数字且每个数字都恰好出现1次。 ”请你推算一下,他的年龄是多少?

for x in range(1, 30): if len(str(x ** 3)) == 4 and len(str(x ** 4)) == 6: num = str(x ** 3) + str(x ** 4) num_count = 0 for y in [str(i) for i in range(10)]: if num.count(y) == 1: num_count += 1 if num_count == 10: print(x) 实例028:计算年龄

题目:贝贝从某年开始每年都举办一次生日party, 并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请你计算她从多少岁开始过生日party? 她今年几岁?

for x in range(1, 100): age_sum = 0 for y in range(x, 100 - x): age_sum += y if age_sum == 236: start_age = x now_age = y print('贝贝从{}岁开始过生日,贝贝今年{}岁。'.format(start_age, now_age)) elif age_sum > 236: break 实例029:对折面条

题目:一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少根面条呢?

noodles_count = 0 for i in range(1, 11): noodles_count = 2 ** i + 1 print('第10次对折得到{}根面条'.format(noodles_count)) 实例030:堆垒煤球

题目:有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), 如果一共有100层,共有多少个煤球?

floor_count = 0 sum_count = 0 for i in range(1, 101): floor_count += i sum_count += floor_count print('第{}层需要{}个煤球,1-100层共有煤球{}个'.format(i, floor_count, sum_count))

f7776eb269a04cc4955c1246aebcfd07.jpeg

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有