Python学习第三天:练习
一、找出100-999之间的水仙花数(各位数字的立方和刚好等于这个数本身)
形如,153 = 1^3 + 5^3 + 3^3
求一个百位数i 的百位,十位,个位
i // 100
i // 10 % 10
i % 10
for num in range(100, 1000):
bw = num // 100
sw = num // 10 % 10
gw = num % 10
if bw ** 3 + sw ** 3 + gw ** 3 == num:
print(num)
补充
输入一个正整数N,将N进行反转
N = int(input('N = '))
total = 0
while N > 0:
total = total * 10 + N % 10
N //= 10
print(total)
二、找出1-10000之间的完美数(除自身外所有因子的和等于这个数)
"""
homework02 - 找出1-10000之间的完美数(除自身外所有因子的和等于这个数)
6 = 1 + 2 +3
28 = 1 + 2 + 4 + 7 + 14
Author:悾格
Date: 2021/7/21
"""
import time
start = time.time()
for num in range(2, 10000):
total = 1
for i in range(2, num):
if num % i == 0:
total += i
if num == total:
print(num)
end = time.time()
print(f'执行时间:{end - start:.3f}秒')
优化代码:减少代码运行次数
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}秒')
三、输入m和n(m > n),计算C(m,n)的值 ----> (m! / (n! * (m - n)!)
"""
homework03 - 输入m和n(m > n),计算C(m,n)的值 ----> (m! / (n! * (m - n)!)
Author:悾格
Date: 2021/7/21
"""
m = int(input('m = '))
n = int(input('n = '))
x = 1
y = 1
z = 1
for i in range(1, m+1):
x *= i
# print(x)
for j in range(1, n+1):
y *= j
# print(y)
# print('-' * 12)
for h in range(1, m-n+1):
z *= h
# print(z)
C = x // (y * z)
print(f'C(m,n)的值为:{C}')
from math import factorial as f
m = int(input('m = '))
n = int(input('n = '))
print(f(m) // f(n) // f(m - n))
四、输入一个正整数,判断它是不是质数(只能被1和自身整除的数)
"""
homework04 - 输入一个正整数,判断它是不是质数(只能被1和自身整除的数)
Author:黄垦灿
Date: 2021/7/21
"""
num = int(input('正整数:num = '))
is_prime = True
for i in range(2, num):
if num % i == 0:
is_prime = False
break
if num > 1 and is_prime:
print(f'{num}是质数')
else:
print(f'{num}不是质数')
# 打印出1-100范围质数
for num in range(1, 100):
is_prime = True
for i in range(2, num):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=',')
for num in range(1, 100):
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,按照如下所示的规律进行打印
'''
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
'''
n = int(input('n = '))
for i in range(1, n + 1):
for j in range(1, i + 1):
print(i, end=' ')
print()
99乘法表
# 乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{j}×{i}={i*j}', end=' ')
print()
五、求三角形的周长和面积
"""
homework05 - 输入三角形的长度,如果能构成三角形就计算周长和面积
如果不能构成三角形,提示用户重新输入,直到正确。
Author:悾格
Date: 2021/7/21
"""
while True:
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a + b > c and a + c > b and b + c > a :
print('是三角形')
C = a + b + c
S = 1/4 * (((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) ** 0.5)
print(f'该三角形的周长为:{C},面积为:{S:.2f}')
break
else:
print('不能构成三角形,请重新输入!!')
import math
while True:
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a + b > c and a + c > b and b + c > a:
print('是三角形')
C = a + b + c
half = C / 2
S = math.sqrt(half * (half - a) * (half - b) * (half - c))
print(f'该三角形的周长为:{C},面积为:{S:.2f}')
break
else:
print('不能构成三角形,请重新输入!!')
六、输入一个n,输出斐波那契数列数
在for in 循环结构中,如果i 的值在循环过程中不使用,那么就可以将i 换成_ ,在这里_ 没有定义
"""
test01 - 输入一个n,输出斐波那契数列数
1 1 2 3 5 8 13 21 34 55 ……
Author:悾格
Date: 2021/7/22
"""
n = int(input('n = '))
a, b = 1, 1
print(a, b, sep='\n')
for _ in range(1, n - 1):
c = a + b
a = b
b = c
print(c)
七、百钱百鸡
"""
test02 - 例?2:百钱百鸡问题。
说明:百钱百鸡是我国古代数学家张丘建在《算经》?书中提出的数学问题:鸡翁?值钱五,
鸡??值钱三,鸡雏三值钱?。百钱买百鸡,问鸡翁、鸡?、鸡雏各?何?翻译成现代?是:
公鸡5元?只,?鸡3元?只,?鸡1元三只,?100块钱买?百只鸡,问公鸡、?鸡、?鸡
各有多少只?
穷举法:穷尽所有的可能性,然后设置条件,找到问题的解 ---> 暴力破解法
Author:悾格
Date: 2021/7/22
"""
i = 1
for x in range(0,21):
for y in range(0, 34):
z = 100 - x - y
if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
print(x, y, z)
八、捕鱼
"""
test03 - 五人晚上去捕鱼,捕了不计其数的鱼,然后累了去睡觉。
第二天,A第一个醒过来,把鱼分成了5份,扔掉了多余的1条,然后拿走自己1份
B第二天醒过来,以为鱼没有分过,把剩下的鱼分成了5份,扔掉多余的1条,拿走自己的1份;
C、D、E依次醒过来,都按照同样的方法来分鱼。问他们最少捕了多少鱼?
Author:悾格
Date: 2021/7/22
"""
fish = 1
while True:
is_enough = True
total = fish
for _ 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
总结
- 今天没有学习新的内容,但是老师出的练习题有点生疏,不能够独立解决题目,但是当老师为我们解答的时候,又是一种豁然开朗的感觉,又是但是,当我独自再回去做的时候,感觉有那种思路,但是代码却写不出来
|