day04_homework

  • 1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)
age = int(input('输入一个年龄: '))
if age >= 60:
    print('老年人')
elif age >= 40:
    print('青壮年')
elif age >= 18:
    print('成年人')
elif age >= 7:
    print('未成年')
else:
    print('儿童')
  • 2.计算5的阶乘 5!的结果是
factoriaNum = 1
for i in range(1, 6):
    factoriaNum *= i
print(factoriaNum)
  • 3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。
sum0 = 0
for num1 in range(1, 21):
    factoriaNum = 1
    # 求出每一项的阶乘结果
    for fNum in range(1, num1+1):
        factoriaNum *= fNum
    # 将所有阶乘相加
    sum0 += factoriaNum
print(sum0)
  • 4.计算 1+1/2!+1/3!+1/4!+...1/20!=?
    sum1 = 0
for num1 in range(1, 21):
    factoriaNum2 = 1
    # 计算每一项阶乘的结果
    for fNum in range(1, num1+1):
        factoriaNum2 *= fNum
    # 将所有阶乘的倒数相加
    factoriaNum2 = 1.0/factoriaNum2
    # print(factoriaNum2)
    sum1 += factoriaNum2
print(sum1)
  • 5.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。
sum2 = 0
while True:
    num2 = float(input('请输入一个正数: '))
    if num2 != 0:
        sum2 += num2
    else:
        break
print(sum2)
  • 6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。
a = int(input('请输入a:'))
num = int(input('请输入数字个数:'))
sum3 = 0
for n in range(1, num+1):
    everyNum = 0
    # 得到 需要计算的每一个数(2,22,222。。。)
    for i in range(n):
        everyNum += (a*10**i)
    # print(everyNum)
    sum3 += everyNum
print(sum3)
  • 7.输入三个整数x,y,z,请把这三个数由小到大输出。
x = int(input('输入整数x:')) 
y = int(input('输入整数y:')) 
z = int(input('输入整数z:')) 
# 以原数为从大到小的顺序考虑(操作步骤最多)
#321-231
if x > y:
    t = x
    x = y
    y = t
# 231-213
if y > z:
    t = y
    y = z
    z = t
# 213-123
if x > y:
    t = x
    x = y
    y = t
print(x, y, z)
  • 8.控制台输出三角形
sideLength = int(input('请输入三角形的边长'))
for l in range(sideLength):
    # 第l+1行 有 sideLength-l 个 '*'
    for x in range(sideLength - l):
        print('*', end='')
    print('\n')
  • 9.输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
#第i行
for i in range(1, 10):
    # 每一行中 当j==i 该行的乘法口诀已经考虑完
    for j in range(1, i+1):
        # 每一行都需从1xi 开始,j在前 每一行未算完不能换行 增加end=','以','结尾
        print('%dx%d=%d'%(j, i, i*j), end=',')
    # 输入完每一行需要换行
    print('\n')
  • 10.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
#假定有x匹大马,y匹中马,100-x-y匹小马, x < 100/3 y <= (100 - 3*x) 进行遍历求值
for x in range(34):
    for y in range((100 - 3*x) // 2 + 1):
        if 3*x +2*y + (100-x-y) / 2 == 100:
            print('大马%d匹,中马%d匹,小马%d匹'%(x, y, 100-x-y)) 
  • 11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
# 假定公鸡x只,母鸡y只 小鸡100-x-y只,x <= 100/5 y <= (100 - 5*x) 进行遍历求值
for x in range(21):
    for y in range((100 - 5*x) // 3 + 1):
        if 5*x +3*y + (100-x-y) / 3 == 100:
            print('公鸡%d只,母鸡%d只,雏鸡%d只'%(x, y, 100-x-y)) 
  • 12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
#假定买洗发水x瓶,香皂y块 则牙刷(100-15*x-2*y)/5根,x <= 100/15 y <= (100 - 15*x) 进行遍历求值
for x in range(7):
    for y in range((100 - 15*x)//2 + 1):
        if (100-15*x-2*y) % 5 == 0:
            print('洗发水%d瓶,香皂%d块 则牙刷%d根'%(x, y, (100-15*x-2*y) / 5)) 

程序解决实际数学问题时,通常利用计算机的高性能,采用穷举法,结合循环 及判断语句 得到想要的结果。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 8月22日-----字符串相关 2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消...
    future_d180阅读 4,553评论 0 1
  • 基础 读程序,总结程序的功能: 1. numbers=1 for i in range(0,20): number...
    Voyaserfuerte阅读 1,630评论 0 0
  • 基础 读程序,总结程序的功能 1.计算2的20次方的值(将1左移20位)。 2.统计1到100中能被3或7整除,但...
    barriers阅读 3,523评论 0 0
  • 1.print输出 打印完内容,默认换行 可以同时打印多个内容,内容见逗号隔开,效果为空格隔开 print(内容,...
    rzlong阅读 1,621评论 0 2
  • 1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童) 2.计算5的阶乘 5!的...
    DoubleKou阅读 1,378评论 1 1

友情链接更多精彩内容