day5 作业、作业复习

随机输入10以内数字 如果与随机相等游戏结束 不等判断大小

b = 0
while True:
    a = int(input('请输入数字:'))
    b += 1
    if   0<=a<=10:

        import random
        i = (random.randint(0,10))


        if a == i:
            break
        elif a< i:
            print('偏小')
        elif a> i:
            print('偏da')
    else :
        print('请输入指定范围内的数')

print('gameover,第',b,'次输入正确')

输入不等于0的数字所有和

a = 0
while True:
    b = int(input('请输入数字:'))
    if 0 == b:
        break
    a += b
    print(a)
print('结束循环')

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

while True:
    a= int(input('请输入年龄:'))
    if a<0 or a >=100:
        print('你他娘的是个人才!')
        break
    elif a<8:
        print('幼儿')
    elif a<12:
        print('儿童')
    elif a<18:
        print('少年')
    elif a<28:
        print('青年')
    elif a<38:
        print('壮年')
    elif a<58:
        print('中年')
    elif a<88:
        print('老年')
    elif a<100:
        print('神仙')

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

分析 5! = 12345,所以先找出1,2,3,4,5 然后再累计乘法

n = 1#由于乘法 所以赋值0
for a in range(1,6):#再1,2,3,4,5中以1相隔取数
    n*=a#a每取一个数就与n相乘并保存在n中 继续与a取出的下一个相乘一直乘到5 并保存在n中
print(n)# 打印出n
a = 1  n = 1*1 = 1 
a = 2  n = 1*2 = 2
a = 3  n = 2*3 = 6
a = 4  n = 6*4 = 24
a = 5  n = 24*5= 120  

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

分析先找出1到20 然后再找出每个数对应的阶乘 累积相加

a = 0#给a赋予0 由于累积相加
for i in range(1,21):#i在[1,20]中依次隔一取数
    b = 1#给b赋予1 由于累积相乘
    for c in range(1,i +1):#i在[1,i+1]中依次隔一取数
        b *= c#b对c进行累积乘
    a+= b#a对于b每次循环的累积乘积进行相加
print(a)#打印出a的值
i = 1 b = 1 c = 1   b = 1 *1 = 1   a= 0+1 = 1
i = 2 b = 1 c = 1   b = 1 *1 = 1   
            c = 2   b = 1 *2 = 2   a= 1+2 = 3
i = 3 b = 1 c = 1   b = 1 *1 = 1
            c = 2   b = 1 *2 = 2
            c = 3   b = 2 *3 = 6   a= 3+6 = 9
i = 4 b = 1 c = 1   b = 1 *1 = 1
            c = 2   b = 1 *2 = 2
            c = 3   b = 2 *3 = 6   
            c = 4   b = 6 *4 = 24  a= 9+24 = 33
i = 5 b = 1 c = 1   b = 1 *1 = 1
            c = 2   b = 1 *2 = 2
            c = 3   b = 2 *3 = 6   
            c = 4   b = 6 *4 = 24 
            c = 5   b = 24*5 = 120 a= 33+ 120 = 153

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

'''
分析:先找出1/1! 、1/2!、 1/3!....一直到 1/20!
然后:再求和


c = 0
for x in range(1,21):   
    b = 1
    for a in range(1,x+1):
        b *= 1/a
        
    c += b

print(c)


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

     0   +   5  +    55    +    555   +  5555     +    55555    + .......
         0*10+5 +  5*10+5  + 55*10+5  + 555*10+5  +  5555*10+5
s = 0 #给s赋值为0 由于是和
n =3  #赋值求的第几项
b =0 #初始项的值 看作
a = 5
for i in range(1,n+1):
    b =b*10 +a #55
    s += b
print(s)

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

a = 1#当前数
b = 1#第二个数
n = 0#第一个数

c = 7
for i in range(1,c):
    a = b + n
    n = b 
    b = a 
print(a )

2. 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅方法:

⽤用⼀一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不不是素数,反之是素数

# 方法 :一 
conut = 0
a  = 0 
for i in range(101,201):
    for x in range(2,i):
        if i%x == 0:
            
            print('此数不是素数',i)
            break
            
    else:
                        
        print('此数是素数',i)

'''
# 方法 :二
# 先取出100 到 201 的数
'''

for i in range(101,201):
    a  = True 
    for x in range(2,i):
        if i%x == 0:
            print('此数不是素数',i)
            a = False
            break

    if a :
        print('此数是素数',i)


# 方法 :三 用while 来做
a = 100
while a <= 200:#取出a范围在 [100,200]
    b = 2#注意b必须在a循环以内
    while b <= a-1 :#取出b范围在[2,a-1]
        if a%b == 0:#判断a是否能整除b(即整除[2,a-1]中任何取值整数)                   
            break#如果a能整除b(即整除[2,a-1]中任何取值整数)退出b循环 然后不执行else:print('此数是素数',a) 并执行a += 1
            #进入下个a循环        
        else:       #如果a不能整除b(即整除[2,a-1]中任何取值整数)进行这一步    并执行b += 1 
                    # 然后再进入b循环判断a是否能整除b(即整除[2,a-1]中任何取值整数)一直重复直到b取值到a-1结束b循环
            b +=1           
    else: #正常结束b循环 则打印内容 然后执行a+=1 重新进入a循环
        print('此数是素数',a)
    a += 1



4. 有⼀一分数序列列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数

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

a = 2#分子
b = 1#分母
c = 3#后一位分子
d = 2#后一位分母
n = 1#取第几次
'''
for x in range(n-1):#循环次数
    a ,b = a + b ,a #后一位分子,后一位分母 = 分子+分母 ,分子
print(a)# 打印当前分子
'''同时改变变量
a = 1
b = 2
a,b = b ,a 
print(a,b)
或者
a = 1
b = 2
t = a 
a = b 
b = t 
print(a,b)
'''

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

a = 1#给数字赋予位数
n = 12345#随机取一个正整数
while True: #无限循环直到遇到break跳出
    c =  n%10#对n取余数保存在C中
    print(c) # 打印出每次循环的余数
    if n //10 == 0:#判断n是否能整除10取商为0
        break      #如果n能整除10取商为0 跳出整个循环打印出a 判断几位    
    n//=10#如果n整除10取商不为0  执行n整除10取商
    a += 1#位数加1 之后 跳到while True再循环  
print(a)#打印出位数

输出3数比较大小

a,b,c = 5,2,3

if   a>b>c:
    print('a>b>c')
elif a>c>b:
    print('a>c>b')
elif b>a>c: 
    print('b>a>c')
elif b>c>a:
    print('b>c>a')
elif c>a>b:
    print('c>a>b')
elif c>b>a:
    print('c>b>a')

1.珠穆朗玛峰

n = 0
b = 8
while True:
    if b >= 884313000:
        break
    b=b*2
    n +=1   
print(n)

2兔子问题 斐波拉奇数列

1,1,2,3,5,8,13,21.......

a = 2 #当前数
b = 1 #前一个数
c = 1 #前两个数
n = 5 #第几个数
for _ in range(n-2):
    a = b + c
    c = b 
    b = a 
print(a)

3百马百担匹配方法

c = 0
for i in range(1,31):
    for a in range(1,51):
        for b in range(2,101,2):
            if i + a +b ==100 and 3*i +2*a + b/2 ==100:
                print(i,a,b)
                c += 1
print(c)

控制台输出三角形

a.根据n的值的不同,输出相应的形状
n = 5时             n = 4
*****               ****
****                ***
***                 **
**                  *
*
n = 5
for i in range(n,0,-1):
    for _ in range(i):
        print('*',end ='')
    print()

'''
b.根据n的值的不同,输出相应的形状(n为奇数)
n = 5               n = 7
  *                    *
 ***                  ***
*****                *****
                    *******
7 = 1星 + 2*3空
7 = 3星 + 2*2空
7 = 5星 + 2*1空
7 = 7星 + 2*0空
'''

n = 7
b = n-4
c =int((n-i)/2)#重要 c变量的位置和结果 如果写在这里 c变量值是固定的 每次循环都不会变的
for i in range(1,n+1,2):#1,3,5

    for _ in range(c):#0,1
        print(' ',end ='')
    for _ in range(i):
        print('*',end ='')
    print()


结果
   *
   ***
   *****
   *******
 

n = 7
b = n-4

for i in range(1,n+1,2):#1,3,5
    c =int((n-i)/2)#重要 c变量的位置和结果 如果写在这里 c变量值会随着循环依次变化的 
    for _ in range(c):#0,1
        print(' ',end ='')
    for _ in range(i):
        print('*',end ='')
    print()


结果
   *
  ***
 *****
*******

判断 n 是否为丑数

n = 6
if (n%2==0 and n%3==0) or  (n%5==0 and n%2==0) or (n%5==0 and n%3==0) :
    if n %4!=0:
        for i in range(6,n):
            if n%i == 0:            
                print('不是丑数')
                break
        else:   
            print('是丑数')
    else:
        print('不是丑数')                                       
else:
    print('不是丑数')                   

求a,b的最大公倍数和最小公约数

# 做错了'''0v0''''


a = 12
b = 30
while 1:
    if b%a!= 0:
        b%=a

        if a%b!= 0:
            a%=b            
        else:           
            print(a//b) 
            break
    else:           
        print(b//a)
        break

5767(b)÷4453(a)=1余1314(b)

 4453(a)÷1314(b)=3余511(a)

 1314(b)÷511(a)=2余292(b)

 511(a)÷292(b)=1余219(a)

 292(b)÷219(a)=1余73(b)

 219(a)÷73(b)=3...0(a)

你可能感兴趣的:(day5 作业、作业复习)