day4-作业

"""author = Zard""

一般:

编程实现(for和while各写一遍):

  1. 求1到100之间所有数的和、平均值
  2. 计算1-100之间能3整除的数的和
  3. 计算1-100之间不能被7整除的数的和
编程实现1
sum1 = 0
for i in range(1,101):
    sum1 += i
avg = sum1 / 100
print(sum1,avg)
编程实现2
sum2 = 0
for x in range(1,101):
    if x % 3 == 0:
        sum2 += x
print(sum2)

老师优解:

sum2 = 0
for x in range(0,101,3):
    sum2 += x
print(sum2)
编程实现3
sum3 = 0
for y in range(1,101):
    if y % 7 != 0:
        sum3 += y
print(sum3)

稍微困难:

2. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:⽤一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不不是素数,反之是素数
count = 0
for m in range(101,201):
    for j in  range(2,int(sqrt(m)+1)):
          if m % j == 0:
                break
    else:
        print(m)
        count += 1
print(count)

老师解法:

count = 0
for m in range(101,201):
    flag = True  # 假设取出来的都是素数
    for j in  range(2,int(sqrt(m)+1)):
        if m % j == 0:
            flag = False # 如果在2~m-1之间有一个数能被m整除,假设不成立
            break
    if flag:
        count += 1
        print(m,'是素数')
print('101-200之间素数的个数:',count)
3. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
for water in range(100,1000):
    a = water // 100
    b = water // 10 % 10
    c = water % 10
    if water == a**3 +b**3+c**3:
        print(water)
4. 有一分数序列:(1/1),2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数

分⼦子:上⼀一个分数的分⼦子加分⺟母 分⺟母: 上⼀一个分数的分⼦子
fz = 2 fm = 1 fz+fm / fz

fenzi = 1
fenmu = 1
for _ in range(20):
    fenzi,fenmu = fenzi+fenmu,fenzi
print(fenzi,'/',fenmu)
1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....
pre_1 = 1  # 前第一个数
pre_2 = 1  # 前第二个数
n = 6          # 求第几个数
# 不满足规则循环的前两个数
current = pre_1 + pre_2
if n == 1 or n ==2:
    current = 1
for _ in range(n-2):
    # 求和
    current = pre_1+pre_2
    # 交换位置
    pre_2 = pre_1
    pre_1 = current
print(current)
    
5. 给⼀一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字

方法1:

count = 0
n = int(input('请输入一个正整数:'))
while 1:
    print(n%10,end='')
    n //= 10
    count +=1
    if n == 0:
        break
print()
print(count)

方法2:

num = 788123
print(len(str(num)))   # 位数
print(str(num)[::-1])  # 逆序

扩展

1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)

略(if,elif,elif,elif,else)

2.计算5的阶乘 5!的结果是
sum = 1
for i in range(1,6):
    sum *= i
print(sum)
求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。
num = 1
sum = 0
for i in range(1,21):
    num *= i
    sum += num
print(sum)
4.计算 1+1/2!+1/3!+1/4!+...1/20!=?
num4 = 1
sum4 = 0
for i in range(1,20):
    num4 *= (1/i)
    sum4 += num4
print(sum4)
5.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。
sum = 0
while 1:
    num5 = int(input('输入一个数字:'))
    if num5 == 0:
        break
    sum +=  num5
print(sum)
6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。
numa = int(input('输入一个数字:'))
num6 = int(input('请输入相加的个数:'))
sum6 = 0
sumhe = 0
while num6:
    for i in range(num6):
        sum6 += numa*10**i
    sumhe += sum6
    sum6 = 0
    num6 -= 1
print(sumhe)

或者(老师做法)

num = 4
n = 6
sum1 = 0
num1 = num
for x in range(n):
    print(num)
    sum1 += num
    num = num*10+num1
print('和',sum1)
扩展:求1+12+123+...+123456789
sum = 0
sumhe = 0
for x in range(1,10):
    sum = sum*10+x
    print(sum)
    sumhe += sum
print(sumhe)
7.输入三个整数x,y,z,请把这三个数由小到大输出。
numx = int(input('输入一个数字x:'))
numy = int(input('输入一个数字y:'))
numz = int(input('输入一个数字z:'))
if numx > numy:
    numx,numy = numy,numx
if numx > numz:
    numx,numz = numz,numx
if numy > numz:
    numy,numz = numz,numy
print(numx,numy,numz)
8a
n = int(input('输入一个数字:'))
for i in range(n, 0, -1):
    print('*' * i)

老师做法:

n = int(input('输入一个数字:'))
# 控制行数
for x in range(n):
    # 控制一行*的个数
    for y in range(n-x):
        print('*',end='')
    print()   #换行
8b
n8 = int(input('输入一个数字(奇数):'))
for i in range(0,n8,2):
    print(' ' * int(n8/2-1/2),'*'*(i+1),' ' * int(n8/2-1/2) )
    n8 -= 2
n8 = int(input('输入一个数字(奇数):'))
# count:*的个数  ,  space:空格的个数
for count in range(1,n8+1,2):
    space = int((n8-count)/2)
    print(''*space)
    print('*'*count)
99乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print('%d * %d = %d' % (j,i,i*j),end=' ')
    print('        ')
10.经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
for x10 in range(34):
    for y10 in range(50):
        for z10 in range(2,100,2):
            if x10*3+y10*2+float(z10/2) == 100 and x10+y10+z10 == 100:
                print(x10,y10,z10)
11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
for x10 in range(20):
    for y10 in range(34):
        for z10 in range(100):
            if x10*5+y10*3+float(z10/3) == 100 and x10+y10+z10 == 100:
                print(x10,y10,z10)
12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
for x10 in range(7):
    for y10 in range(51):
        for z10 in range(21):
            if x10*15+y10*2+z10*5 == 100:
                print(x10,y10,z10)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容