16.求1000以内的所有水仙花数(水仙花数:它的每个位上的数字的 n 次幂之和等于
它本身,例如:1^3 + 5^3+ 3^3 = 153)
解题思路:(个、的3次方 + 十、的3次方 + 百、的3次方) = 1000以内的某个数
lst = []
for i in range(100,1000):
a = str(i)
b = int(a[0])
s = int(a[1])
g = int(a[2])
if i == (b**3 + s**3 + g**3):
lst.append(i)

print(lst)

17.编程求s=1!+2!+3!+…..+n!
解题思路:
数列和的公式,也叫高斯求和
(n+1)×(n÷2)
公式:(首数+尾数)×(尾数÷2)

1的阶乘+2的阶乘+3的阶乘+...+n的阶乘
#1
num_n = int(input("请输入数字"))
a = 1
res = 0
for i in range(1,num_n+1):
a *= i
res += a

print(res)

#2
n = input("请输入数字n:")
if n.isdigit():
res = 0
n_s = 1
i = 1
while i <= int(n):
n_s *= i
res += n_s
i += 1
else:
print(res)
else:
print("请输入数字!")

18.钞票换硬币
把一元钞票换成一分、二分、五分硬币(每种至少一枚),有多种换法,分别有
哪些?
解题思路:
1 = 100
1
2
5
100/1 + 100/2 +100/5 = 100

lst = []
co = 0
for i in range(1,100):
for j in range(1,50):
for k in range(1,20):
if i*1 + j*2 + k*5 == 100:
co += 1
t = (i,j,k)
lst.append(t)

print("有{}种换法".format(co))
print(lst)


19.自己实现在一句话中查找某个单词的算法,存在返回索引号,否则返回False
#1
str_a = input("请输入一段话:")
lst_c = str_a.split(" ")
str_b = input("请输入查找的单词")
if str_b in lst_c:
for i in range(len(lst_c)):
if str_b == lst_c[i]:
print(i)
else:
print("False")

20.读入一个十进制整数,实现十进制转二进制算法将其转成二进制数
要求:不能使用现成进制转换函数,自己写代码实现

n = input("请输入一个整数:")
if n.isdigit():
res = []
n_int = int(n)
while n_int != 0:
res.append(str(n_int % 2))
n_int = n_int // 2
else:
res.reverse()
print("{}的二进制为:{}".format(n, "".join(res)))
else:
print("数字格式有误!")

posted on 2021-11-23 22:26  Wgl123  阅读(94)  评论(0编辑  收藏  举报