導航:首頁 > 編程語言 > python九百道題

python九百道題

發布時間:2022-09-04 09:29:46

『壹』 python題:

1. 歐幾里德演算法
歐幾里德演算法又稱輾轉相除法, 用於計算兩個整數a, b的最大公約數。其計算原理依賴於下面的定理:
定理: gcd(a, b) = gcd(b, a mod b)
證明:
a可以表示成a = kb + r, 則r = a mod b
假設d是a, b的一個公約數, 則有 d|a, d|b, 而r = a - kb, 因此d|r。
因此,d是(b, a mod b)的公約數。
加上d是(b,a mod b)的公約數,則d|b, d|r, 但是a = kb + r,因此d也是(a, b)的公約數。
因此,(a, b) 和(a, a mod b)的公約數是一樣的,其最大公約數也必然相等,得證。
歐幾里德的Python語言描述為:

1
2
3
4
5
6
7
8
9
10

def gcd(a, b):
if a < b:
a, b = b, a

while b != 0:
temp = a % b
a = b
b = temp

return a

2. Stein演算法
歐幾里德演算法是計算兩個數最大公約數的傳統演算法,無論是理論,還是從效率上都是很好的。但是他有一個致命的缺陷,這個缺陷只有在很大的素數時才會顯現出來。
考慮現在的硬體平台,一般整數最多也就是64位, 對於這樣的整數,計算兩個數值就的模很簡單的。對於字長為32位的平台,計算兩個不超過32位的整數的模,只需要一個指令周期,而計算64位以下的整數模,也不過幾個周期而已。但是對於更大的素數,這樣的計算過程就不得不由用戶來設計,為了計算兩個超過64位的整數的模,用戶也許不得不採用類似於多位除法手算過程中的試商法,這個過程不但復雜,而且消耗了很多CPU時間。對於現代密碼演算法,要求計算128位以上的素數的情況比比皆是,設計這樣的程序迫切希望能夠拋棄除法和取模。
Stein演算法由J.Stein 1961年提出,這個方法也是計算兩個數的最大公約數。和歐幾里德演算法不同的是,Stein演算法只有整數的移位和加減法,這對於程序設計者是一個福音。
為了說明Stein演算法的正確性,首先必須注意到以下結論:
gcd(a, a) = a, 也就是一個數和他自己的公約數是其自身。
gcd(ka, kb) = k * gcd(a, b),也就是最大公約數運算和倍乘運算可以交換,特殊的,當k=2時,說明兩個偶數的最大公約數比如能被2整除。
Stein演算法的python實現如下:

1
2
3
4
5
6
7
8
9
10
11
12
13

def gcd_Stein(a, b):
if a < b:
a, b = b, a
if (0 == b):
return a
if a % 2 == 0 and b % 2 == 0:
return 2 * gcd_Stein(a/2, b/2)
if a % 2 == 0:
return gcd_Stein(a / 2, b)
if b % 2 == 0:
return gcd_Stein(a, b / 2)

return gcd_Stein((a + b) / 2, (a - b) / 2)

3. 一般求解實現
核心代碼很簡單:

1
2
3

def gcd(a, b):
if b == 0:return a
return gcd(b, a % b)

附上一個用Python實現求最大公約數同時判斷是否是素數的一般方法:
程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

#!/usr/bin/env python

def showMaxFactor(num):
count = num / 2
while count > 1:
if num % count == 0:
print 'largest factor of %d is %d' % (num, count)
break #break跳出時會跳出下面的else語句
count -= 1
else:
print num, "is prime"

for eachNum in range(10,21):
showMaxFactor(eachNum)

輸出如下:

1
2
3
4
5
6
7
8
9
10
11

largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10

『貳』 PYthon練習題

inport 關鍵字寫錯了,是 import 不是 inport 。

importrandom

『叄』 Python練習題

1
print("hi, 「」「how are you」」」, I』m fine and you")

2
a, b= map(int, input().split())
r=a//b
m=a%b

『肆』 python題目

str1="computer4"
str1.split()[0]*4
Out[175]:''
[str1.split()[0]]*4
Out[176]:['computer','computer','computer','computer']
str2="science#5"
[str2.split('#')[0]]*4
Out[178]:['science','science','science','science']
str2.split('#')[0]*4
Out[179]:'sciencesciencesciencescience'

『伍』 Python題目

#輸出"Hello,world!"
print('hello,world')

#從鍵盤輸入4個整數a,b,c,x計算函數值
a=int(input('請輸入a的值:'))
b=int(input('請輸入b的值:'))
c=int(input('請輸入c的值:'))
x=int(input('請輸入x的值:'))
y=(a*x)^2+b*x+c
print('最終的值為:%s'%y)

#計算費波納契數列的第n項的遞歸程序
deffibonacci(n):
ifn==0orn==1:
returnn
else:
returnfibonacci(n-1)+fibonacci(n-2)
print(fibonacci(3))

#從鍵盤輸入若干個用空格分開的單詞,按字典序排序後輸出
inputWords=input('請輸入幾個單詞,用空格分開 ')
word=sorted(inputWords.split(''))
print(word)

『陸』 求python題目解答(初學階段)

  1. 列表lst中有4個元素,看有幾個元素,就看逗號就好了,即便是嵌套列表,在兩個逗號之間,也算一個元素,你可以使用len(lst)得到結果。

  2. lst[3]的數據類型為列表,列表用[]表示。

  3. lst[3][1][2]=10

  4. lst[-1][-1][1]=9;

    lst[-1][-1][3]=12;

    lst[-1][-1][-3:]=[9, 10, 12];

    lst[-1][-1][-3:][::-1]=[12, 10, 9] #::-1表示列表反轉

『柒』 python練習題

#!/usr/bin/env/python
#coding:utf-8
#


deffibonacci(n):
"""
.Foryourinformation,:
0,1,1,2,3,5,8,13,21,34,55,89,144,233,...

Thatis,,
twonumbersthatprecedeit.Forexample,
secondnumber,,andsoon...

,thenyourprogramshouldprint/outputinone
linetheFibonaccisequenceupton.
Forexample,ifnis100,yourprogramshouldoutput0,1,1,2,3,5,8,13,21,34,55,89,
Ifnis8,yourprogramshouldoutput0,1,1,2,3,5,8,
"""
def__iter__(n):
a,b=0,1

yielda
ifn==0:
return

yieldb
ifn==1:
return

whilea+b<=n:
a,b=b,a+b
yieldb

returnlist(__iter__(n))if__name__=="__main__":
printfibonacci(35)

『捌』 python基礎題 真心求解

sep="|",字元串中間用"|"隔開
end="#",字元串末尾加上"#"
所以第一個顯示Hello|100#,第二個顯示您好,所以是
D.Hello|100#您好

『玖』 python基礎題

(1)count = 0
(2)while count < 3:
(3) name = input()
(4) password = input()
(5) if name == 'Kate' and password == '666666':
(6) print("登錄成功!")
(7) break
(8) else:
(9) count += 1
(10) if count == 3:
(11) print("3次用戶名或者密碼均有誤!退出程序!")
程序開始執行:
(1):定義int類型變數count並為其賦初始值0,執行語句(2)。
(2):循環語句,若變數count>=3則跳出循環,程序結束。若count<3則進入循環,執行語句(3)。
(3):定義str類型變數name並調用python內置輸入函數input(),控制台等待輸入,假設輸入"Kate",執行語句(4)。
(4):定義str類型變數password並調用python內置輸入函數input(),控制台等待輸入,假設輸入"666666"。執行語句(5)
(5):判斷語句,若name變數的__str__()函數的返回值等於字元串'Kate'的__str__()函數的返回值且password變數__str__()函數的返回值等於字元串'666666'的__str__()函數的返回值則執行語句(6),否則執行語句(9),因假設中name變數的值為"Kate",password變數的值為"666666",故執行語句(6)

(6):調用內置輸出函數print(self, *args, sep=' ', end='\n', file=None),其中*args對應實參為「登錄成功!」,故輸出「登錄成功」。執行語句(7)

(7):break關鍵字,跳出循環,程序無後續代碼,程序結束。
(9):count變數的值等於count變數的值加1。執行語句(10)
(10):判斷count變數的值是否等於3,如果是執行語句(11),否則執行語句(2)
(11):調用內置輸出函數print(self, *args, sep=' ', end='\n', file=None),其中*args對應實參為「3次用戶名或密碼均有誤!退出程序」,故輸出「3次用戶名或密碼均有誤!退出程序」。執行語句(2),因count>=3,故執行完(2)後程序結束。

閱讀全文

與python九百道題相關的資料

熱點內容
汽車聽聲音解壓 瀏覽:233
硬核程序員 瀏覽:546
文件夾變醒目 瀏覽:41
國外上映國內未上映的電影網站 瀏覽:584
香港伺服器卡頓怎麼解決 瀏覽:161
linuxoracletns 瀏覽:831
androidgallery3d 瀏覽:95
怎麼查訂閱了哪些app 瀏覽:7
下載站用的什麼伺服器 瀏覽:788
原神的伺服器如何分辨 瀏覽:886
每天pdf 瀏覽:518
安卓手機怎麼設置關閉屏幕時間 瀏覽:816
雲伺服器有寶塔面板嗎 瀏覽:518
中行app如何看基點 瀏覽:205
怎麼限制網路連接的人數安卓 瀏覽:178
怎麼把app數據清理 瀏覽:835
什麼APP既 瀏覽:228
兩台阿里雲伺服器怎麼並行 瀏覽:633
觸控筆如何關閉app 瀏覽:124
linux永久關閉防火牆命令 瀏覽:402