函数(下)和字符串练习

本文提供了一系列编程练习,涉及统计正负数的平均值、财务学费预测、数的筛选、平方根计算、消除误差、数列求和、π的近似计算、完全数识别以及组合计算等数学和统计问题,旨在提升编程解决数学问题的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、(统计正数和负数的个数然后计算这些数的平均值)编写一个程序来读入不指定个数的整数,然后决定已经读取的整数中有多少个正数和多少个负数并计算这些输入值的总和,最终得出平均值,程序以输入0结束,用浮点数显示这个平均值

zheng = 0
fu = 0
he = 0
for i in range(200):
    a = int(input("请输入整数:"))
    if a != 0:
        if a > 0:
            zheng += 1
        else:
            fu += 1
    else:
        break
    he += a
ping = he / (zheng + fu) 
print("您输入的正数有%d个,负数有%d个,平均值是%.2f"%(zheng,fu,ping))
请输入整数:1
请输入整数:2
请输入整数:3
请输入整数:-1
请输入整数:-2
请输入整数:0
您输入的正数有3个,负数有2个,平均值是0.60

2、(财务应用程序:计算未来学费)假设大学今年的学费是10000美元,且以每年5%增长。编写程序计算十年之后的学费以及从现在开始到十年后大学四年的总学费

money = 10000
si = 0
for i in range(13):
    money = money * 0.05 + money
    if i == 9:
        print("十年后的学费是:%d"%money)
    if i >= 9:
        si += money
print("十年后大学四年的总学费:%d"%si)
十年后的学费是:16288
十年后大学四年的总学费:70207

3、(找出可被5和6同时整除的数)编写程序找出在100和1000之间所有被5和6同时整除的数,每行显示十个数,并被空格隔开

count = 0
for i in range(100,1000):
    if i % 5 == 0 and i % 6 == 0:
        print(i,end = " ")
        count += 1
        if count % 10 == 0:
            print()
120 150 180 210 240 270 300 330 360 390
420 450 480 510 540 570 600 630 660 690
720 750 780 810 840 870 900 930 960 990

4、(找出最小的n满足n²>12000)使用while循环找出最小整数n满足大于12000
(找出最小的n满足n²>12000)使用while循环找出最小整数n满足大于12000

n = 1
while n ** 2 < 12000:
    n += 1
print(n)

n = 1
while n ** 3 < 12000:
    n += 1
print(n-1)
110
22

5、(演示消除错误)当你操作一个非常大的数和一个非常小的数时,就会出现消除错误。大数可能会抵消比较小的数。例:100000000.0+0.000000001的结果是100000000.0.为了避免消除错误并获取更精确的结果,应该仔细选择计算的顺序。例如:在计算下面数列的过程中,你可以从右向左而不是从左向右计算,这样将会获取更精确的结果。
1+1/2+1/3+…+1/n
编写程序比较从左到右和从右向左计算上面数列和的结果,其中n=50000

a = 0
for i in range(1,5001):
    a += 1 / i
print(a)

a = 0
for i in range(5000,0,-1):
    a += 1 / i
print(a)
9.094508852984404
9.09450885298443

6、(数列求和)编写程序对下面的数列求和:1/3+3/5+5/7+…+95/97+97/99

sum = 0
for i in range(1,97,2):
    j = i + 2
    sum += i / j
print("数列的和是:%f"%sum)
44.144652

7、(计算π)用下面的数列计算
π=4(1-1/3+1/5-1/7+1/9-7/11+…+(-1)^(i+1)/(2i-1))
编写程序显示当i=10000、20000、…、100000时π的值

a = 0
i = int(input())
for j in range(1,i):
    a += 4 * ((-1) ** (j + 1) / (2 * j - 1))
print(a)
20000
3.1416426560898874

8、(完全数)如果一个正整数等于除了它本身之外所有正因子的和,那么这个数被称为完全数。例如,6是一个完全数,因为6=3+2+1,下一个完全28=14+7+4+2+1。注:小于10000的完全数有四个。

for i in range(1,10000):
    a = 0
    for j in range(1,i):
        if i % j == 0:
            a += j
    if a == i:
        print(a,end = (" "))
6 28 496 8128

9、(数学问题:组合)编写程序显示从1到7的整数中选取两个数的所有可能组合,同时显示组合的总个数

count = 0
for i in range(1,8,2):
    for j in range(2,8):
            if i != j :
                count += 1
                print(i,j,end = ",")
print("组合共有%d个数"%count)
1 2,1 3,1 4,1 5,1 6,1 7,3 2,3 4,3 5,3 6,3 7,5 2,5 3,5 4,5 6,5 7,7 2,7 3,7 4,7 5,7 6,
组合共有21个数

10、(统计方面:计算均值和标准差)编写一个程序提示用户输入10个数字,
然后使用下面的公示显示均值和标准方差。
mean=∑xi/n=(x1+x2+…+xn)/n deviation=sqrt(∑(mean-xi)²/n)

import math
n = 0
a = 0
b = []
c = 0
for i in range(10):
    shu = float(input("请输入10个数字:"))
    b.extend([shu])
    a += shu
    n += 1
mean = a / n
print("均值:%d"%mean)
for j in b:
    c += (mean - j) **2 / n
    deviation = math.sqrt(c / n)
print("标准差:%d"%deviation)
请输入10个数字:1
请输入10个数字:2
请输入10个数字:3
请输入10个数字:4
请输入10个数字:5
请输入10个数字:6
请输入10个数字:1
请输入10个数字:2
请输入10个数字:3
请输入10个数字:1
均值:2.8 
标准差:0.5253570214625479
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值