day5_作业

读程序,总结程序的功能:

numbers=1  
for i in range(0,20):
      numbers*=2  print(numbers)  
print(numbers)

功能:2**20

summation=0 
num=1 
while num<=100:
    if (num%3==0 or num%7==0) and num%21!=0:
        summation += 1
    num+=1
print(summation)

功能:求在1~100中能被3或7整除,但不能被21整除(即不能同时被3和7整除)的数的个数
编程实现(for和while各写⼀一遍):

  1. 求1到100之间所有数的和、平均值
#for
sum1=0
for num in range(1,101):
    sum1+=num
avg=sum1/100
print("和为:%d 平均值为:%.2f"%(sum1,avg))
#while
sum1=0
num=1
while num<=100:
    sum1+=num
    num+=1
avg=sum1/100
print("和为:%d 平均值为:%.2f"%(sum1,avg))  #5050,50.50
  1. 计算1-100之间能3整除的数的和
sum1=0
for num in range(1,101):
    if not num%3:
        sum1+=num
print(sum1)
#while
sum1=0
num=1
while num<=100:
    if not num%3:
        sum1+=num
    num+=1
print(sum1)   #1683
  1. 计算1-100之间不能被7整除的数的和
#for
sum1=0
for num in range(1,101):
    if num%7:
        sum1+=num
print(sum1)
#while
sum1=0
num=1
while num<=100:
    if num%7:
        sum1+=num
    num+=1
print(sum1)  #4315
  1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....
n=int(input("请输入你想要第几个斐波纳数列的数:"))
num=2 #num循环的次数,前2次为1,不用循环
now_num=1 #当前数
before_num=1 #前一个数
number=0 #用于交换数
while num<n:
    number=now_num
    now_num+=before_num
    before_num=number
    num+=1
print(now_num)
  1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅方法:⽤用⼀一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不不是素数,反之是素数
number=0
for num in range(101,201):
    for num1 in range(2,num):
        if not num%num1:
            break
    else:
        print(num,end=" ")
        number+=1
print()
print(number)

21个

  1. 打印出所有的⽔水仙花数,所谓⽔水仙花数是指⼀一个三位数,其各位数字⽴立⽅方和等于该数本身。例例如:153是 ⼀一个⽔水仙花数,因为153 = 1^3 + 5^3 + 3^3
number=0
for num in range(100,1000):
    if num==(num//100)**3+((num//10)%10)**3+(num%10)**3:
        print(num,end=" ")
        number+=1
print(number)

153 370 371 407 4

  1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数 分子:上⼀一个分数的分子加分母 分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz
from fractions import Fraction
fz = 2  # 分子
fm = 1 # 分母
number=0
for num in range(1,20):
    number=fz
    fz+=fm
    fm=number
print(Fraction(fz, fm))

17711/10946

  1. 给一个正整数,要求:1、求它是⼏几位数 2.逆序打印出各位数字
import random
num=random.randint(1,100000)
print(num,end=" ")
print(len(str(num)),end=" ")
print(str(num)[::-1])

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

while 1:
    age=int(input("请输入年龄:"))
    if age<10:
        print("儿童")
    elif age<18:
        print("未成年")
    elif age<30:
        print("成年人")
    elif age<60:
        print("青壮年")
    else:
        print("老年人")

2.计算5的阶乘 5!的结果是

factorial=1   #阶乘的积
for num in range(1,6):
    factorial*=num 
print(factorial)

120

3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。

sum1=0
for num1 in range(1,21):
    factorial=1  #阶乘的积
    for num in range(1,num1+1):
        factorial*=num   #求阶乘
    sum1+=factorial  #求和

print(sum1)

算法改进:在计算超过1000后有明显的优化

sum1=0
number=1
for num in range(1,21):
    number*=num    #n!=(n-1)!*n,用number记录当前阶乘的值。
    sum1+=number
print(sum1)

2561327494111820313

4.计算 1+1/2!+1/3!+1/4!+...1/20!=?

from fractions import Fraction
sum=0
for num in range(1,21):
    factorial=1
    for num1 in range(1,num+1):
        factorial*=num1
    sum+=1/factorial
print(Fraction(sum1))

算法改进:

from fractions import Fraction
factorial=1
sum1=0
for num in range(1,21):
    factorial*=1/num
    sum1+=factorial
print(Fraction(sum1))

1.7182818284590455

5.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。

num=int(input("请输入一个数字:"))
sum1=0
while num!=0:
    sum1+=num
    num=int(input("请输入一个数字:"))
print(sum1)

6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。

a=int(input("请输入a:"))
count1=int(input("请输入相加的个数:"))
sum1=0
for num1 in range(1,count1+1):
    for num2 in range(0,num1):
        sum1+=a*10**num2
print(sum1)

或者

a=int(input("请输入a:"))
count1=int(input("请输入相加的个数:"))
sum1=0
for num in range(1,count1+1):
    sum1+=a*num*10**(count1-num)   #222+22+2=246=2*1*10**2+2*2*10**1+2*3*10**0
print(sum1)

7.输入三个整数x,y,z,请把这三个数由小到大输出。

x=int(input("请输入三个数字:"))
y=int(input())
z=int(input())
a=[x,y,z]
a.sort()  #从小到大排序
for num in a:
    print(num)

或者

x=int(input("请输入三个数字:"))
y=int(input())
z=int(input())
num=0
while not x<=y<=z:
    if x>y:
        num=x
        x=y
        y=num
    if y>z:
        num=y
        y=z
        z=num
print(x,y,z)

或者

x=int(input("请输入三个数字:"))
y=int(input())
z=int(input())
a=[x,y,z]
max1=0
bool1=True
while bool1:
    for num in range(0,len(a)-1):
        if a[num]>a[num+1]:
            max1=a[num]
            a[num]=a[num+1]
            a[num+1]=max1
            break
    else:
            bool1=False
print(a)

8.控制台输出三角形

a.根据n的值的不同,输出相应的形状
n = 5时             n = 4
*****               ****
****                ***
***                 **
**                  *
*

b.根据n的值的不同,输出相应的形状(n为奇数)
n = 5               n = 7
  *                    *
 ***                  ***
*****                *****
                    *******
n=4
for num in range(n,0,-1):
    for num1 in range(1,num+1):
        print("*",end="")
    print()

9.输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

image.png
for num in range(1,10):
    for num1 in range(1,num+1):
        print("%d*%d=%d"%(num1,num,num*num1),end="  ")
    print()
1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
[Finished in 0.2s]

10.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?

for num in range(1,101):
    for num1 in range(1,101-num):
        if num*3+num1*2+(100-num-num1)*0.5==100:
            print("有大马%d匹,  中马%d匹,  小马%d匹"%(num,num1,100-num-num1))
有大马2匹,  中马30匹,  小马68匹
有大马5匹,  中马25匹,  小马70匹
有大马8匹,  中马20匹,  小马72匹
有大马11匹, 中马15匹,  小马74匹
有大马14匹, 中马10匹,  小马76匹
有大马17匹, 中马5匹,   小马78匹
[Finished in 0.1s]

11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。

for num in range(1,101):
    for num1 in range(1,101-num):
        if num*5+num1*3+(100-num-num1)*(1/3)==100:
            print("有公鸡%d只,  母鸡%d只,  雏鸡%d只"%(num,num1,100-num-num1))
有公鸡4只,  母鸡18只,  雏鸡78只
有公鸡8只,  母鸡11只,  雏鸡81只
有公鸡12只, 母鸡4只,   雏鸡84只
[Finished in 0.1s]

12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?

count1=0
for xfs in range(0,100//15+1):
    for xz in range(0,(100-xfs*15)//2+1):
        for yg in range(0,(100-xfs*15-xz*2)//5+1):
            if xfs*15+xz*2+yg*5==100:
                print("洗发水有:%d, 香皂有:%d, 牙膏有:%d。"%(xfs,xz,yg))
                count1+=1
print(count1)

或者

for xfs in range(0,100):
    if 15*xfs>100:
        break
    for xz in range(0,100):
        money=15*xfs+xz*2
        if money>100:
            break
        if (100-money)%5==0:
            yg=(100-money)/5
            print("洗发水有:%d,  香皂有:%d,  牙膏有:%d。"%(xfs,xz,yg))

或者(最优)

count1=0
xfs=0
while xfs*15<=100:
    xz=0
    while xfs*15+xz*2<=100:
        money=100-xfs*15-xz*2
        if money%5==0:
            yg=money/5
            count1+=1
            print("洗发水有:%d,  香皂有:%d,  牙膏有:%d。"%(xfs,xz,yg))
        xz+=1
    xfs+=1
print(count1)
洗发水有:0, 香皂有:0,  牙膏有:20。
洗发水有:0, 香皂有:5,  牙膏有:18。
洗发水有:0, 香皂有:10, 牙膏有:16。
洗发水有:0, 香皂有:15, 牙膏有:14。
洗发水有:0, 香皂有:20, 牙膏有:12。
洗发水有:0, 香皂有:25, 牙膏有:10。
洗发水有:0, 香皂有:30, 牙膏有:8。
洗发水有:0, 香皂有:35, 牙膏有:6。
洗发水有:0, 香皂有:40, 牙膏有:4。
洗发水有:0, 香皂有:45, 牙膏有:2。
洗发水有:0, 香皂有:50, 牙膏有:0。
洗发水有:1, 香皂有:0,  牙膏有:17。
洗发水有:1, 香皂有:5,  牙膏有:15。
洗发水有:1, 香皂有:10, 牙膏有:13。
洗发水有:1, 香皂有:15, 牙膏有:11。
洗发水有:1, 香皂有:20, 牙膏有:9。
洗发水有:1, 香皂有:25, 牙膏有:7。
洗发水有:1, 香皂有:30, 牙膏有:5。
洗发水有:1, 香皂有:35, 牙膏有:3。
洗发水有:1, 香皂有:40, 牙膏有:1。
洗发水有:2, 香皂有:0,  牙膏有:14。
洗发水有:2, 香皂有:5,  牙膏有:12。
洗发水有:2, 香皂有:10, 牙膏有:10。
洗发水有:2, 香皂有:15, 牙膏有:8。
洗发水有:2, 香皂有:20, 牙膏有:6。
洗发水有:2, 香皂有:25, 牙膏有:4。
洗发水有:2, 香皂有:30, 牙膏有:2。
洗发水有:2, 香皂有:35, 牙膏有:0。
洗发水有:3, 香皂有:0,  牙膏有:11。
洗发水有:3, 香皂有:5,  牙膏有:9。
洗发水有:3, 香皂有:10, 牙膏有:7。
洗发水有:3, 香皂有:15, 牙膏有:5。
洗发水有:3, 香皂有:20, 牙膏有:3。
洗发水有:3, 香皂有:25, 牙膏有:1。
洗发水有:4, 香皂有:0,  牙膏有:8。
洗发水有:4, 香皂有:5,  牙膏有:6。
洗发水有:4, 香皂有:10, 牙膏有:4。
洗发水有:4, 香皂有:15, 牙膏有:2。
洗发水有:4, 香皂有:20, 牙膏有:0。
洗发水有:5, 香皂有:0,  牙膏有:5。
洗发水有:5, 香皂有:5,  牙膏有:3。
洗发水有:5, 香皂有:10, 牙膏有:1。
洗发水有:6, 香皂有:0,  牙膏有:2。
洗发水有:6, 香皂有:5,  牙膏有:0。
44
[Finished in 0.2s]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 基础 读程序,总结程序的功能: 循环20次,每次都让number乘以2,number初始值为1 统计1到100中能...
    留级是不可能留级的阅读 149评论 0 0
  • 8月22日-----字符串相关 2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消...
    future_d180阅读 957评论 0 1
  • 1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童) 2.计算5的阶乘 5!的...
    liuperson阅读 216评论 0 0
  • 客年有略微严重的遗忘症,这对他而言是一件好事。因为他总是有很多的疑惑,一旦得不到解决就会连续几天都睡不着觉...
    诗间行客阅读 236评论 1 2
  • 深夜接到她的电话,我很意外。她沉默良久,哽咽地说:“海鱼,他和我分手了,为什么,为什么……”随即传来的是她撕心裂肺...
    百川有鱼阅读 100评论 0 0