1. 列印字母C
******
*
*
*
*
******
def print_c(n):
print(`*` * n)
for i in range(n):
print(`* `)
print(`*` * n)
print_c(20)
2.列印字母N
* *
* * *
* * *
* * *
* *
演算法:N在左下角空心三角形的基礎上減去最後一行的*,並在每行後面列印一個*,設定N的寬=N的高,列印心三角形詳見20190103這篇文章
def print_N(n):
for i in range(n+1):
#列印的行數
for j in range(n+1):
#每行列印的*個數(N的寬度),僅列印首尾的*,空間以空格分隔
if j ==0 or j==i:
print(`*`,end = ` `)
#列印第一個和斜槓中的*,j==i的時候列印斜槓中的*起始點
elif j==n:
print(`*`,end =``)
#列印N中第二個直線位置的*,此處end=``與end =` `沒有區別,因為j=n是最後一遍迴圈,之後就是換行了
else:
print(` `,end = ` `)
#其他位置用空格填充
print()
Print_N(10)
3.列印口
* * * * * *
* *
* *
* * * * * *
口除第一行和最後一行全部列印外,其他行僅列印首尾,定義口的高和寬
def quadrangle(hight,width):
for i in range(hight+1):
for j in range(width+1):
if i ==0 or i ==hight:
print(`*`,end =` `)
#空心四邊形第一行全部列印
elif j==0 or j ==width:
print(`*`,end =` `)
#空心四邊形中間行數列印首尾
else:
print(` `,end =` `)
print()
quadrangle(10,10)
4.列印H
* *
* *
* * * * *
* *
* *
演算法:H,分為高和寬,設定寬為高的一半因此我們寫H的時候只需要指定H的高就好
def print_H(height):
if isinstance(height,int) and height>=5:
for i in range(height+1):
#列印H的高
for j in range(int(height/2)+1):
if i ==int(height/2):
print(`*`,end = ` `)
elif j ==0 or j==int(height/2):
print(`*`,end =` `)
else:
print(` `,end =` `)
print()
else:
print(`請設定H的高度大於5`)
print_H(10)
H的高度必須大於5的原因是為了大於H中間那條橫,因為j的範圍為height/2+1,當height=4一下的時候,j列印的*小於2,因此無法列印除H中間的那一橫
5.列印楊輝三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
將每一行看作一個list,先寫除一個 方法輸出下一行的list值
def pascal_list_generate(list):
#print(len(list))
pascal =[]
if len(list)>=2:#因為需要取第i-1個值,因此len(list)必須大於等於2,如果len(list)=1,則i-1<0,程式報錯
for i in range(len(list)+1):
if i ==0:
pascal.append(1)
#楊輝三角的第一和最後一位數為1
elif i>=1 and i <len(list):
pascal.append(list[i]+list[i-1])
#除第一個和最後一個數外楊輝三角第n行的第m個數為第n-1行第m和m-1的數之和
elif i==len(list):
#楊輝三角的第一和最後一位數為1
pascal.append(1)
else:
pascal.append(1)
pascal.append(1)
#相容楊輝三角第二行的情況
return pascal
寫一個列印楊輝三角每行的函式,並且可以自定義楊輝三角的行數
def pascal_trigal(n):
s =[1]
if n ==1:
print(s)
else:
print(s)
for i in range(n-1):
print(pascal_list_generate(s))
s = pascal_list_generate(s)
pascal_trigal(10)
在楊輝三角的方法裡面迴圈迭代呼叫每一行的生成方法。