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')