day5 作业

一、基础

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

numbers=1  
for i in range(0,20):  
    numbers *= 2  
print(numbers)  
答案:分解程序:功能:2的20次方。
i = 1  numbers = number *2 = 1*2 =2**1
i = 2  numbers = number *2 = 2*2 =2**2
i = 3  numbers = number *2 = 4*2 =2**3
....
i = 4  numbers = number *2    2**20

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

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)
答案:功能:

num = 1;取值范围[1,100]
求和条件:满足能被3或者7整除,但是不能被21整除的值、
功能:求出1(包含)-100(包含)能被3或者7整除,但不能被21整除的个数。

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

3. 求1到100之间所有数的和、平均值

答案 for循环

sum1 = 0
count = 0
for num2 in range(1,101):
    sum1 += num2
    count +=1
ave = sum1 / count
print("和为",sum1,"平均值为"+str((ave)))
答案:while循环
sum2 = 0
i = 1
count = 0
while i <= 100:
    sum2 += i
    i = i+1
    count +=1
ave = sum2 / count
print("和为",sum1,"平均值为"+str((ave)))

4、. 计算1-100之间能3整除的数的和

答案 for循环
sum1 = 0
for i in range(101):
    if i % 3 ==0:
        sum1 +=i
    i = i+1
print(sum1)
答案:while循环
num = 1
sum1 = 0
while num <=100:
    if num %3 ==0:
        sum1 += num
    num +=1
print(sum1)

5、 计算1-100之间不能被7整除的数的和

答案:for循环
sum2 = 0
for i in range(101):
    if not(i % 7 == 0):
        sum2 +=i
    i +=1
print(sum2)

sum2 = 0
for i in range(101):
    if i % 7 != 0:
        sum2 +=i
    i += 1
print(sum2)
答案:while循环
sum3 = 0
num = 1
while num <= 100:
    if not (num % 7 ==0):
        sum3 +=num
    num += 1
print(sum3)

sum3 = 0
num = 1
while num <= 100:
    if num % 7 !=0:
        sum3 +=num
    num += 1
print(sum3)

二、稍微困难

6 求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....

答案:列表操作
n = int(input("你想知道第几位的斐波那契数列值?请输入:"))
before1 = 1
before2 = 1
count = 2
a = []
if n==1:
    print("第%d位" % n + "的斐波那契数列是" + "1")
elif n == 2:
    print("第%d位" % n + "的斐波那契数列是" + "1")
else:
    a.append(before1)
    a.append(before2)
    current3 = before1 + before2
    a.append(current3)
    while True:
        bb = int(a[-1])+int(a[-2])
        a.append(bb)
        print(a)
        count +=1
        if n == count:
            break
    print("第%d位"%n+"的斐波那契数列是"+"%d"%a[n-1])

二、
pre_1 = 1
pre_2 = 1
current = 1
n=int(input("请输入n:"))
for i in range(3,n+1):
    current = pre_1+pre_2
    pre_1,pre_2 = current,pre_1
print("第%d的数是%d"%(n,current))


7 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅法:⽤⼀个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数

答案
kk = []
bb = []
a = 2
for i in range(101,201):
    bb.append(i)
    a = 2
    while 2 <= a < i:
        j = 0
        while a+j <i:
            if i % a+j ==0:
                kk.append(i)
            j +=1
        a +=1
kkk = list(set(kk))
# print(kkk)
# print(len(kkk))
# print(bb)
num = 0
# print(kkk[0])
# bb.remove(kkk[num])
# print(bb)
while 0<= num <= len(kkk)-1:
    bb.remove(kkk[num])
    num += 1
print(bb)

二、
for i in range(101,201):
    for a in range(2,i):
        if i%a == 0:
            break
    else:
        print(i,end="\t")

三、for num in range(101,201):
    count = 0  #存储2到num-1之间能够被num整除的的个数。
    for x in range(2,num):
        if num % x ==0:
            count +=1
            break
    if count ==0:
        print("不是素数",num,end="\t")

8 打印出所有的⽔仙花数,所谓⽔仙花数是指⼀个三位数,其各位数字⽴⽅和等于该数本身。例如:153是⼀个⽔仙花数,因为153 = 1^3 + 5^3 + 3^3

答案:
aa = []
for i in range(100,999):
    a = i
    print(str(a))
    a = (int(str(a)[0]))**3+(int(str(a)[1]))**3+(int(str(a)[2]))**3
    if i == a:
        aa.append(i)
print(aa)

二、
for i in range(100,999):
    a = i
    a = (int(str(a)[0]))**3+(int(str(a)[1]))**3+(int(str(a)[2]))**3
    if i == a:
        print(i)

9 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数分⼦:上⼀个分数的分⼦加分⺟ 分⺟: 上⼀个分数的分⼦ fz = 2 fm = 1 fz+fm / fz

答案 :第20位的值是17711/10946
n = int(input("你想知道第几位的值?请输入:"))
first = 2/1
a1 = str((str(2)+"/"+str(1)))
aa = [2,1]
count = 1
if n == 1:
    print("第%d"%n+"位的值是%s"%a1)
else:
    while True:
        next_fm = aa[-2]
        next_fz = int(aa[-1])+int(aa[-2])
        aa.append(next_fz)
        aa.append(next_fm)
        count +=1
        if n == count:
            break
    print("第%d" %n + "位的值是%s" %(str(aa[-2])+"/"+str(aa[-1])))

二、
fen_zi = 2
fen_mu = 1
n = int(input("你想知道第几位:?"))
for x in range(2,n+1):
    fen_zi,fen_mu = fen_zi+fen_mu,fen_zi
print("%d/%d"%(fen_zi,fen_mu))

10 给⼀个正整数,要求:1、求它是⼏位数 2.逆序打印出各位数字

答案:
import random
suiji_int_n  = random.randint(1000,9999)
num1 = str(suiji_int_n)
len_num1 = len(num1)
print("这个数%s是%s"%(num1,len_num1)+"位数",end="\t")
count = len_num1-1
b = ""
while 0 <= count <= len_num1-1:
  b += num1[count]
  count -= 1
print("逆序是%s"%b)

二、
import random
suiji_int_n  = random.randint(1000,9999)
num1 = str(suiji_int_n)
print(num1)
len_num1 = len(num1)
print("这个数%s是%s"%(num1,len_num1)+"位数",end="\t")
print(num1[::-1])

三、n = 1236
count = 1
while n // 10:
   count +=1
   n //= 10
print(count)
n = 1236
for _ in range(count):
   print(n % 10,end=" ")
   n //=10

三、扛把子困难

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

答案:
import random
age = random.randint(1,99)
i = 0
while i <= 10:
    age = random.randint(1, 99)
    if age <= 14:
        print("小朋友,你才%d你还是儿童"%age,"回家吧打游戏吧")
    elif age <= 18:
        print("你才%d你未成年" %age, "回家看吧")
    elif age <= 40:
        print("大兄弟,你%d正值壮年" %age, "里边请")
    elif age <= 60:
        print("老板好,你都%d了" %age, "注意身体,要节制啊")
    elif age <= 100:
        print("老爷子,你都%d了" %age, "红灯区不适合你了")
    else:
        print("%d?" %age, "滚装逼")
    i+=1

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

答案: 5!的值是 120
import random
i = 0
while i<= 10:
    num1 = random.randint(1,10)
    a = num1
    print(a)
    cj = 1
    while True:
        cj *= num1
        num1 -= 1
        if num1 == 0:
            break
    i += 1
    print("%d!的值是"%a,"%d"%cj)

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

答案:从1!加到20! 的值是从1!加到20! 的值是2561327494111820313
import random
num1 = int(input("你想求出1!到多少的阶乘的和?请输入:"))
i = 1
sum =0
while i <= num1:
    cj = 1
    flag = True
    a = i
    while flag:
        cj *= a
        a -= 1
        if a ==0:
            flag =False
    sum += cj
    i += 1
print("从1!加到%d!"%num1,"的值是%d"%sum)
二】
cj = 1
sum = 0
for i in range(1,21):
    cj *= i
    sum +=cj
print(cj,sum)

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

答案:大约为 1.7183
num1 = int(input("你想求出1/1!到多少的1/阶乘的和?请输入:"))
i = 1
sum =0
while i <= num1:
    cj = 1
    flag = True
    a = i
    while flag:
        cj *= a
        a -= 1
        if a ==0:
            flag =False
    sum += 1/cj
    i += 1
print("从1!加到1/%d!"%num1,"的值是%s"%sum)

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

答案:
import random
sum1 = 0
flag = True
while flag:
    num1 = random.randint(0,3)
    print(num1, end="\t")
    if num1 == 0:
        flag = False
    sum1 += num1
print("求和为%d"%sum1)

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

答案:
import random
n = int(input("输入几位相同的num1相加?请输入:"))
num1 = random.randint(1,9)
sum = num1
i = 2
while i <= n:
    print()
    cc = str(num1)
    b = str(num1).rjust(i,cc)
    print(b,end=' ')
    sum += int(b)
    i +=1
print("求和为%d"%sum)

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

答案:
import random
a=[]
n = int(input("你想几个数比较大小:请输入:"))
m = int(input("你想几位数比较大小:请输入:"))
i= 1
bb = []
while i <= n:
    x = random.randint(10**(m-1),10**m-1)
    a.append(x)
    i += 1
for kkk in range(n):
    aa = max(a)
    bb.append(aa)
    a.remove(aa)
print(bb)

8.控制台输出三角形

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

答案:
import random
i = 1
while i <=2:
    num1 = random.randint(1,9)
    if num1 & 1: # 奇数
        k = num1
        while 1 <= k <= num1:
            b = "*"
            print(b*k)
            k -=1
    else:
        k = num1
        while 1 <= k <= num1:
            b = "*"
            print(b*k)
            k -=1
    i += 1

b.根据n的值的不同,输出相应的形状(n为奇数)

n = 5               n = 7
  *                    *
 ***                  ***
*****                *****
                    *******
答案:
import random
flag = True
while flag:
    num1 = random.randint(3,20)
    if  num1 %2 !=0:
        flag =False
if  num1 %2 !=0:
    k = 1
    while 1 <= k <= num1:
        b = "*"
        d = b*k
        c = d.center(num1," ")
        print(c)
        k +=2

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

答案:
fir = 1
while fir <= 9:
    sec = 1
    while sec <= fir:
        print(str(sec)+"*"+str(fir)+"="+str(sec*fir),end="\t")
        sec += 1
    fir +=1
    print()

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

答案:

大马有2中马有30小马有68
大马有5中马有25小马有70
大马有8中马有20小马有72
大马有11中马有15小马有74
大马有14中马有10小马有76
大马有17中马有5小马有78
大马有20中马有0小马有80

horse = 100
for i_big in range(101):
    big_horse = i_big
    for i_midle in range(horse-i_big+1):
        midle_horse = i_midle
        for i_smail in range(horse-i_big-i_midle+1):
            smail_horse = i_smail
            if (big_horse + midle_horse + smail_horse == horse) and (3*big_horse + 2*midle_horse + 0.5*smail_horse == 100):
                print("大马有%d"%big_horse+"中马有%d"%midle_horse+"小马有%d"%smail_horse)

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

答案:

公鸡有0,母鸡有25,小鸡有75,
公鸡有4,母鸡有18,小鸡有78,
公鸡有8,母鸡有11,小鸡有81,
公鸡有12,母鸡有4,小鸡有84,

chicken = 100
for i_g in range(101):
    g_chicken = i_g
    for i_m in range(chicken-i_g+1):
        m_chicken = i_m
        for i_s in range(chicken-i_g-i_m+1):
            s_chicken = i_s
            if (s_chicken % 3 == 0) and (g_chicken + m_chicken + s_chicken == 100) and ((5*g_chicken + 3*m_chicken + 1*s_chicken*(1/3) == 100)):
                print("公鸡有%d,"%g_chicken+"母鸡有%d,"%m_chicken+"小鸡有%d,"%s_chicken)

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

答案:

可以买洗发水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
可以买洗发水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

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

推荐阅读更多精彩内容

  • 读程序,总结程序的功能: 功能:2**20 功能:求在1~100中能被3或7整除,但不能被21整除(即不能同时被3...
    逆流而上_2eb6阅读 454评论 0 0
  • 基础 读程序,总结程序的功能: 循环20次,每次都让number乘以2,number初始值为1 统计1到100中能...
    留级是不可能留级的阅读 149评论 0 0
  • 读程序,总结程序的功能: 功能:numbers初值为1,循环买20次每次乘以2 功能:找出1~100中是3的倍数或...
    佐手牵鼬手_89a9阅读 162评论 0 0
  • 编程实现(for和while各写 1遍): 求1到100之间所有数的和、平均值sum1 = 0for x in r...
    大漠判官1阅读 218评论 0 0
  • 基础读程序,总结程序的功能:1 2 编程实现(for和while各写一遍): 求1到100之间所有数的和、平均值 ...
    Christmas_boy阅读 238评论 0 0