Day03–homework
1.统计正负数个数并计算平均值
编写程序:
def main(x,zheng,fu,i,sum1):
while x!=0:
x = int(input('输入一个整数,以输入值0来结束:'))
if(x>0):
zheng += 1
elif(x<0):
fu += 1
i += 1
sum1 = sum1 + x
if sum1 != 0:
xxx = sum1/(i-1)
print('输入的正数有%d个,输入的负数有%d个,这组数的和为%d,这组数的平均数为%.2f'%(zheng,fu,sum1,xxx))
else:
print('结束')
return
def start():
x = 1
zheng = 0
fu = 0
i = 0
sum1 = 0
main(x,zheng,fu,i,sum1)
start()
结果为:
输入一个整数,以输入值0来结束:1
输入一个整数,以输入值0来结束:2
输入一个整数,以输入值0来结束:-1
输入一个整数,以输入值0来结束:0
输入的正数有2个,输入的负数有1个,这组数的和为2,这组数的平均数为0.67
2.计算未来学费
编写程序:
def main(money,sum1):
for i in range(1,14):
money = money * 0.05 + money
if i ==10:
print('十年之后的学费:%.2f'%money)
if i >= 10:
sum1 += money
print('十年后大学四年的总学费为:%.2f'%sum1)
def start():
money = 10000
sum1 = 0
main(money,sum1)
start()
结果为:
十年之后的学费:16288.95
十年后大学四年的总学费为:70207.39
3.同第一题
4.找出可被5、6同时整除的数
编写程序:
def main(geshu):
for i in range(100,1001):
if i%5 == 0 and i%6 == 0:
print(i,end=' ')
geshu += 1
if geshu % 10 == 0:
print('\n')
def start():
geshu = 0
main(geshu)
start()
结果为:
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
5.while循环找满足条件的数
编写程序:
def main():
n = 0
m = 0
math(n,m)
def math(n,m):
while n**2 <= 12000:
n += 1
print('n的平方大于12000的最小整数n为:%d'%n)
while m**3 < 12000:
m += 1
print('n的立方大于12000的最大整数n为:%d'%(m-1))
main()
结果为:
n的平方大于12000的最小整数n为:110
n的立方大于12000的最大整数n为:22
7.演示消除错误
编写程序:
def start():
sum1 = 0
sum2 = 0
main(sum1,sum2)
def main(sum1,sum2):
for i in range(1,50001):
sum1 += 1/i
i += 1
print('从左向右计算为:',sum1)
for i in range(50000,0,-1):
sum2 += 1/i
i -= 1
print('从右向左计算为:',sum2)
start()
结果为:
从左向右计算为: 11.397003949278504
从右向左计算为: 11.397003949278519
8.数列求和
编写程序:
sum1 = 0
for i in range(3,100,2):
sum1 += (i-2)/i
print('数列的和为:',sum1)
结果为:
数列的和为: 45.124450303050196
9.计算π
编写程序:
def start():
pi = 0
i = int(input('输入i的值:'))
main(pi,i)
def main(pi,i):
for j in range(1,i+1):
pi += 4 * ((-1)**(1+j)/(2*j-1))
print('π的值为:%f'%pi)
start()
结果为:
输入i的值:10000
π的值为:3.141493
输入i的值:20000
π的值为:3.141543
输入i的值:100000
π的值为:3.141583
10.完全数
编写程序:
for i in range(1,10000):
x = 0
for j in range(1,i):
if i % j == 0:
x += j
if x == i:
print('10000以下的完全数有:%d'%x)
结果为:
10000以下的完全数有:6
10000以下的完全数有:28
10000以下的完全数有:496
10000以下的完全数有:8128
11.数学问题:组合
编写程序:
list1 = []
for i in range(1,8):
for j in range(1,8):
if i != j and sorted([i,j]) not in list1:
list1.append([i,j])
print('所有可能的组合为:',list1)
print('组合总个数为:',len(list1))
结果为:
所有可能的组合为: [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 4], [3, 5], [3, 6], [3, 7], [4, 5], [4, 6], [4, 7], [5, 6], [5, 7], [6, 7]]
组合总个数为: 21
12.计算均值和方差
编写程序:
import numpy as np
arr=[]
i = 1
while i <= 10:
x = float(input('输入十个数字:'))
arr.append(x)
i += 1
#求均值
arr_mean = np.mean(arr)
#求方差
arr_var = np.var(arr)
print("平均值为:%f" % arr_mean)
print("方差为:%f" % arr_var)
结果为:
平均值为:5.710000
方差为:7.956900