每天學一點之Python100例(19 20)

2021-08-20 21:33:04 字數 1600 閱讀 6421

每天學一點,形成一種知識複利

問題19:

楊輝三角定義如下: 

1 1 1 

1 2 1 

1 3 3 1 

1 4 6 4 1 

1 5 10 10 5 1 

...用python列印出楊輝三角。

分析:什麼是楊輝三角?

楊輝三角,是二項式係數在三角形中的一種幾何排列

即(1+x)平方展開為1+2x+x^2,其係數為1,2,1,其中第n行的數字有n項,

每個數等於它上方兩數之和

。我們可以把每一行看做乙個list,所以整個楊輝三角,可以定義為list_all = * n

每個數等於它上方兩數之和等於list_all[row][col] = list_all[row-1][col] + list_all[row-1][col-1]

democode:

#! /usr/bin/python3

def main():

num = int(input("please input rows num:"))

list_all = * num

for row in range(len(list_all)):

list_all[row] =[none] * (row + 1)

#print(list_all)

for col in range(len(list_all[row])):

if col == 0 or col == row:

list_all[row][col] = 1

else:

list_all[row][col] = list_all[row-1][col] + list_all[row-1][col-1]

print(list_all[row][col], end = '\t')

print()

if __name__ == '__main__':

main()

問題20:

驗證輸入使用者名稱和qq號是否有效並給出對應的提示資訊;要求:

使用者名稱必須由字母、數字或下劃線構成且長度在6~20個字元之間

qq號是5~12的數字且首位不能為0

分析:此題涉及到了正規表示式,需要匯入re模組,用到了re裡的match()方法

democode:

import re

def main():

username = input('please input user name:')

qq = input('please inut qq num: ')

m1 = re.match(r'^[0-9a-za-z_]$', username)

if not m1:

print('please input an valid user name.')

m2 = re.match(r'^[1-9]\d$', qq)

if not m2:

print('please input an valid qq num.')

if m1 and m2:

print('input correct!')

if __name__ == '__main__':

main()

每天學一點之Python100例(3 4)

每天學一點,形成一種知識複利 問題3 乙個整數,它加上100後是乙個完全平方數,再加上168又是乙個完全平方數,請問該數是多少?分析 從問題中我們這知道,這題的重點就是 完全平方數 先了解下什麼是完全平方數。完全平方數 若乙個數能表示成某乙個整數的平方的形式,則稱這個數為完全平方數。將問題數學化,設...

每天學一點之Python100例(13 14)

每天學一點,形成一種知識複利 問題13 十進位制轉二進位制,八進位制,十六進製制 分析 使用對應函式進行轉換 democode usr bin python3 def hexconverter input num int input please input a num print dec num ...

每天學一點之Python100例(21 22)

每天學一點,形成一種知識複利 問題21 棧的簡單實現 分析 什麼是棧?棧是一種容器,可存入資料元素 訪問元素 刪除元素等。棧的基本操作是乙個封閉的集合。現在給出乙個棧抽象資料型別的描述,其中定義的操作包括 棧的建立 建立乙個空棧 判斷棧是否為空 將元素壓入棧中 進棧或入棧 從棧中彈出元素並將其返回 ...