头秃的初学者第四天

day 04 小技巧

  • 1.显示执行时间,可以加在day01所说的,自动添加首代码里面
import time

start = time.time()

end = time.time()
print(f'程序执行时间:{end - start:.4f}s')

day04 昨天的作业

  • 1.进制双向转化
a = float(input('请输入数据:'))
b = input('请选择单位(厘米/英寸):')
if b == '厘米':
    c = 0.393 * a
    b1 = '英寸'
if b == '英寸':
    c = float(2.54 * a)
    b1 = '厘米'
print('结果为:', c, b1)
  • 2.找出100-999之间的水仙花数(各位数字的立方和刚好等于这个数本身)
for i in range(100, 1000):
    a = i // 100
    b = i // 10 % 10
    c = i % 10
    if a ** 3 + b ** 3 + c ** 3 == a * 10 ** 2 + b * 10 + c:
        print(a, b, c)
  • 3.将任意一个数字倒转

    n = int(input('输入n:'))
    total = 0
    while n > 0:
        a = n % 10
        total = total*10 + a
        n = n // 10
    print(total)
    
  • 4.找出1-10000之间的完美数(除自身外所有因子的和等于这个数)

    import  time
    
    start = time.time()
    for num in range(2, 10000):
        total = 1
        for i in range(2, int(num**0.5)+1):
            if num % i == 0:
                total += i
                if i !=num // i:
                    total += num //i
    
        if num == total:
            print(num)
    
    end = time.time()
    print(f'运行时间:{end-start:.3f}')
    
  • 5.输入m和n(m>=n,m,n>0),计算c(m,n)的值,c(m,n)==m!/(n!*(m-n)!)

    m = int(input('请输入m值:'))
    n = int(input('请输入n值:'))
    o = m - n
    m1 = 1
    n1 = 1
    o1 = 1
    for m in range(1, m+1):
        m1 *= m
    for n in range(1, n+1):
        n1 *= n
    for o in range(1, o+1):
        o1 *= o
    a = m1 // n1 // o1
    print(a)
    # 第一种方法
    
    from math import factorial as fac
    m = int(input('请输入m值:'))
    n = int(input('请输入n值:'))
    o = m - n
    a = fac(m)//fac(n)//fac(o)
    print(a)
    # 第二种方法(factorial函数求阶乘),对函数改名
    
  • 6.输入一个正整数,判断他是不是质数

    num = int(input('请输入一个正整数:'))
    is_prime = True
    
    for i in range(2, num):
        if num % i == 0:
            is_prime = False
            break
    
    if is_prime:
        print(f'{num}是质数')
    else:
        print(f'{num}不是质数')
    # 输入一个正整数判断是否为质数
    # 第一种方法
    
    import time
    start = time.time()
    for num in range(2, 10000):
        is_prime = True
        for i in range(2, int(num**0.5)+1):
            if num % i == 0:
                is_prime = False
                break
    
        if is_prime:
            print(num, end='\n')
    end = time.time()
    print(f'执行所用时间:{end-start:.10f}')
    # 第二种方法,执行时间更短,将num开方,会节省很多计算
    
  • 7.输入三角形三条边的长度,如果能构成三角形就计算周长和面积,如果不能构成三角形,提示用户重新输入直到正确

    a1 = float(input("请输入三角形第一条边:"))
    b1 = float(input("请输入三角形第二条边:"))
    c1 = float(input("请输入三角形第三条边:"))
    while a1 + b1 <= c1 or a1 + c1 <= b1 or b1 + c1 <= a1:
        a1 = float(input("请重新输入三角形第一条边:"))
        b1 = float(input("请重新输入三角形第二条边:"))
        c1 = float(input("请重新输入三角形第三条边:"))
    z = a1+b1+c1
    p = z/2
    s = (p*(p-a1)*(p-b1)*(p-c1)) ** (1/2)
    print('三角形周长:', z)
    print('三角形面积', s)
    print('这三个边能够构成三角形')
    

day04 练习习题

  • 1.数字矩阵

    n = int(input('请输入行数:'))
    for h in range(1, n + 1):
        for j in range(1, n+1):
            print(f'{h*j:<10d}', end='      ')
        print()
    
  • 2.输出斐波拉切数1 1 2 3 5 8 13(求出黄金分割)

a = 1
b = 1
c = 0
print(a,b,sep='\n')
for i in range(2,100):
    c = a + b
    print(c)
    print(f'黄金分割:{b / c:.100f}')
    a,b = b,c
  • 3.百钱百鸡,公鸡5块,母鸡3块,小鸡三只1块.

    a = 5
    b = 3
    c = 1 / 3
    for x in range(0, 21):
        for y in range(0, 34):
            for z in range(0, 100, 3):
                n = x * a + y * b + z * c
                if n == 100 and x + y + z == 100:
                    print(x, y, z)
    # 穷举法,然后设置条件,找到最后解
    
  • 4.abcde五个人一天晚上捕了很多鱼,但是太累了回去就睡了。第二天,a第一个醒了,丢掉一条多出来的鱼,将其他鱼平分成五分,拿走自己的那一份就走开了。b,c,d,e依次醒来,和a一样的操作。请问最少捕了多少条鱼。

    import time
    
    start = time.time()
    fish = 6
    while True:
        is_enough = True
        total = fish
        for i in range(5):
            if (total - 1) % 5 == 0:
                total = (total - 1) // 5 * 4
            else:
                is_enough = False
                break
        if is_enough:
            print(fish)
            break
        fish += 5
    end = time.time()
    print(f'程序执行时间:{end - start:.4f}s')
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值