** 以下都是通過(guò)枚舉法解決問(wèn)題的。其實(shí)枚舉法的本質(zhì)就是把所有問(wèn)題可能的結(jié)果都嘗試一邊,再通過(guò)某種條件將錯(cuò)誤的結(jié)果篩選出去,留下的便是正確的結(jié)果。 **
- 輸出一個(gè)直角三角形,符合 注釋中的那個(gè)三角形格式。
# 輸出一個(gè)個(gè)三角形
# 輸入 5 輸出的是一個(gè)五行的三角形
# 第一行 1個(gè)* 第二行 2個(gè) ... 第五行五個(gè)
# 第一步 我們需要一層for循環(huán)控制輸出 n行 *
# 第二步 我們需要一層for循環(huán)控制每一層輸出*的個(gè)數(shù) 1,2,3,4,5
# for i in range(n):
# for j in range(i+1):
# *
# **
# ***
# ****
# *****
def out_angle1(n):
for i in range(n):
for j in range(i+1):
print("*",end="")
print()
- 以下根據(jù)案例1改變的輸出三角形,可以根據(jù)1嘗試寫(xiě)一下。
# *
# **
# ***
# ****
# *****
def out_angle2(n):
for i in range(n):
for j in range(n-i-1):
print(" ",end="")
for j in range(n - i,n+1):
print("*", end="")
print()
# *
# ***
# *****
# *******
# *********
def out_angle3(n):
for i in range(n):
for j in range(n-i-1):
print(" ",end="")
for k in range(2*(i+1)-1):
print("*",end="")
- 斐波那契數(shù)列:1,1,2,3,5,8,13,21,34,55,......。斐波那契額數(shù)列的規(guī)律是 前兩個(gè)為1,從第三個(gè)開(kāi)始的每一個(gè)數(shù)為前一個(gè)數(shù)與前一個(gè)數(shù)的前一個(gè)數(shù)字的和。比如:第三個(gè)數(shù)2為第二個(gè)數(shù)和第一個(gè)數(shù)的和。第四個(gè)數(shù)3為第三個(gè)數(shù)與第二個(gè)數(shù)的和。以下為遞歸和非遞歸的兩種求解方式。
# fbnq 遞歸
def fib(n):
if n == 1 or n == 2:
return 1
else:
return fib(n-1)+fib(n-2)
# 非遞歸
def fib_n(n):
result = 0
a = 0
b = 0
for i in range(n+1):
if i<=2:
result = 1
a = 1
b = 1
else:
result = a+b
b,a = result,b
return result
4.求前100個(gè)素?cái)?shù)和,素?cái)?shù)是只能被1和本身整除的數(shù)。1不是素?cái)?shù)。
# 判斷 100以內(nèi)素?cái)?shù) 并進(jìn)行求和
def is_prime(n):
result = 0
for i in range(2,n):
is_pr = True
diversor = int(i/2)+1
# print(diversor)
if i>2:
for j in range(2,diversor):
if i %j == 0:
is_pr = False
break
if is_pr == True:
result = result +i
print(i,end= " ")
return result
def is_prime_2(n):
result = 0
prime_list = []
for i in range(2,n):
is_pr = True
if i %2 == 0 and i!=2:
is_pr = False
else:
for j in prime_list:
if i %j == 0:
is_pr = False
break
if is_pr == True:
result = result +i
prime_list .append(i)
print(i,end= " ")
return result