這個就是循環2n次呀。先是讓x=x+c,在把c更新一下c=c+b,最後讓b=b+a,這就完成一次循環了。
不過你給的程序不完整。
⑵ python求質數的演算法
很早 的一個 函數
⑶ 40道python二級考試真題火爆互聯網,完整版答案解析為你保駕護航
1.以下關於程序設計語言的描述,錯誤的選項是:
A Python語言是一種腳本編程語言
B 匯編語言是直接操作計算機硬體的編程語言
C 程序設計語言經歷了機器語言、匯編語言、腳本語言三個階段
D 編譯和解釋的區別是一次性翻譯程序還是每次執行時都要翻譯程序
正確答案: C
2.表達式 1001 == 0x3e7 的結果是:
A false
B False
C true
D True
正確答案: B
3.以下選項,不是Python保留字的選項是:
A del
B pass
C not
D string
正確答案: D
4.表達式 eval(『500/10』) 的結果是:
A 『500/10』
B 500/10
C 50
D 50.0
正確答案: D
5.表達式 type(eval(『45』)) 的結果是:
A
B
C None
D
正確答案: D
6.表達式 pmod(20,3) 的結果是:
A 6, 2
B 6
C 2
D (6, 2)
正確答案: D
7.以下關於字元串類型的操作的描述,錯誤的是:
A str.replace(x,y)方法把字元串str中所有的x子串都替換成y
B 想把一個字元串str所有的字元都大寫,用str.upper()
C 想獲取字元串str的長度,用字元串處理函數 str.len()
D 設 x = 』aa』 ,則執行x*3的結果是『aaaaaa』
正確答案: C
8.設 str = 『python』,想把字元串的第一個字母大寫,其他字母還是小寫,正確的選項是:
A print(str[0].upper()+str[1:])
B print(str[1].upper()+str[-1:1])
C print(str[0].upper()+str[1:-1])
D print(str[1].upper()+str[2:])
正確答案: A
9.以下選項,不屬於程序流程圖基本元素的是:
A 循環框
B 連接點
C 判斷框
D 起始框
正確答案: A
10.以下關於循環結構的描述,錯誤的是:
A 遍歷循環使用for in 語句,其中循環結構不能是文件
B 使用range()函數可以指定for循環的次數
C for i in range(5)表示循環5次,i的值是從0到4
D 用字元串做循環結構的時候,循環的次數是字元串的長度
正確答案: A
11.執行以下程序,輸入」93python22」,輸出結果是:
A python9322
B python
C 93python22
D 9322
正確答案: C
A la
B 請輸入整數
C pythonpython
D python
正確答案: C
A 2
B 請輸入q退出:
C 3
D 1
正確答案: A
14.以下程序的輸出結果是:
A 0
B 2
C UnboundLocalError
D 5
正確答案: A
A 18 None
B 10 18
C UnboundLocalError
D 18 18
正確答案: B
def test( b = 2, a = 4):
global z
z += a * b
return z
z = 10
print(test(),z)
18,18
17.以下程序的輸出結果是:
A 22.0 None
B 10 None
C 22 None
D 10.0 22.0
正確答案: B
18.以下表達式,正確定義了一個集合數據對象的是:
A x = { 200, 』flg』, 20.3}
B x = ( 200, 』flg』, 20.3)
C x = [ 200, 』flg』, 20.3 ]
D x = {『flg』 : 20.3}
正確答案: A
19.以下程序的輸出結果是:
A [『z』, 『j』, 『s』, 『y』]
B [『j』, 『s』, 『y』, 『z』]
C [『j』, 『z』, 『z』, 『s』, 『z』, 『y』, 『j』]
D [『j』, 『j』, 『s』, 『y』, 『z』, 『z』, 『z』]
正確答案: B
20.以下程序的輸出結果是:
A htslbht
B hlbst
C tsblh
D hhlstt
正確答案: B
21.已知id(ls1) = 4404896968,以下程序的輸出結果是:
A 4404896968 4404896904
B 4404896904 4404896968
C 4404896968 4404896968
D 4404896904 4404896904
正確答案: A
A [『300』,『200』,『400』]
B [『shandong』, 『hebei』, 『beijing』]
C [300,200,400]
D 『shandong』, 『hebei』, 『beijing』
正確答案: B
23.以下關於文件的描述,錯誤的是:
A 二進制文件和文本文件的操作步驟都是「打開-操作-關閉」
B open() 打開文件之後,文件的內容並沒有在內存中
C open()只能打開一個已經存在的文件
D 文件讀寫之後,要調用close()才能確保文件被保存在磁碟中了
正確答案: C
24.以下程序輸出到文件text.csv里的結果是:
A [90,87,93]
B 90,87,93
C 『[90,87,93]』
D 『90,87,93』
正確答案: B
25.以下程序的輸出結果是:
A ( [1,2,3,4,5])
B [12, 34, 56, 78]
C ([12, 34, 56, 78])
D [1,2,3,4,5]
正確答案: B
26.以下關於數據維度的描述,錯誤的是:
A 採用列表表示一維數據,不同數據類型的元素是可以的
B JSON格式可以表示比二維數據還復雜的高維數據
C 二維數據可以看成是一維數據的組合形式
D 字典不可以表示二維以上的高維數據
正確答案: D
27.以下不屬於Python的pip工具命令的選項是:
A show
B install
C download
D get
正確答案: D
29.以下不是程序輸出結果的選項是:
A [12, 78, 56, 34]
B [56, 12, 78, 34]
C [12, 34, 56, 78]
D [12, 78, 34, 56]
正確答案: C
30.以下關於turtle庫的描述,正確的是:
A 在import turtle之後就可以用circle()語句,來畫一個圓圈
B 要用from turtle import turtle來導入所有的庫函數
C home() 函數設置當前畫筆位置到原點,朝向東
D seth(x) 是setheading(x)函數的別名,讓畫筆向前移動x
正確答案: C
31.一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調用。而實現遞歸調用中的存儲分配通常用
A 棧
B 堆
C 鏈表
D 數組
正確答案: A
因為函數調用是能過將關鍵寄存器壓棧保護現場;在函數返回時,彈棧恢復現場來完成的。
而遞歸調用說白了就是自已調用自己。也就是不停的上演pop, push的棧操作。
系統為什麼選用棧來實現函數間的調用呢?我覺的主要原因如下:
對於頻繁的調用操作過程中,棧的pop,push操作最簡潔,快速。硬體級(或者理解成匯編級也行)支持棧操作。所以用棧最高效,快速。如果用堆、數組、鏈表,不光要維護很多功能輔助性數據,演算法也很麻煩。這樣會大大降低計算機的使用效率。
32.下列敘述中正確的是
A 一個演算法的空間復雜度大,則其時間復雜度必定小
B 一個演算法的空間復雜度大,則其時間復雜度也必定大
C 演算法的時間復雜度與空間復雜度沒有直接關系
D 一個演算法的時間復雜度大,則其空間復雜度必定小
正確答案: C
34.軟體開發離不開系統環境資源的支持,其中必要的測試數據屬於
A 輔助資源
B 硬體資源
C 通信資源
D 支持軟體
正確答案: A
35.完全不考慮程序的內部結構和內部特徵,而只是根據程序功能導出測試用例的測試方法是
A 錯誤推測法
B 白箱測試法
C 黑箱測試法
D 安裝測試法
正確答案: C
37.下列有關資料庫的描述,正確的是
A 資料庫是一個關系
B 資料庫是一個DBF文件
C 資料庫是一個結構化的數據集合
D 資料庫是一組文件
正確答案: C
38.相對於資料庫系統,文件系統的主要缺陷有數據關聯差、數據不一致性和
A 可重用性差
B 冗餘性
C 非持久性
D 安全性差
正確答案: B
39.軟體開發的結構化生命周期方法將軟體生命周期劃分成
A 定義、開發、運行維護
B 設計階段、編程階段、測試階段
C 總體設計、詳細設計、編程調試
D 需求分析、功能定義、系統設計
正確答案: A
40.下列不屬於結構化分析的常用工具的是
A 判定樹
B 數據字典
C 數據流圖
D PAD圖
正確答案: C
⑷ python走迷宮演算法題怎麼解
示例:
#coding:UTF-8
globalm,n,path,minpath,pathnum
m=7
n=7
k=[0,1,2,3,4,5,6,7]#循環變數取值范圍向量
a=[[0,0,1,0,0,0,0,0],
[1,0,1,0,1,1,1,0],
[0,0,0,0,1,0,0,0],
[1,1,1,1,1,0,0,0],
[0,0,0,0,0,1,1,0],
[0,0,0,0,0,0,0,0],
[0,0,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0]]#迷宮矩陣
b=[[1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]] #狀態矩陣
path=[]
minpath=[]
min=10000
step=0
pathnum=0
#print(a)
#print(b)
defnextone(x,y):
globalpath,minpath,m,n,min,step,pathnum
if(x==0)and(y==0):
path=[]
step=0
if(x==m)and(y==n):
pathnum+=1
print("step=",step)
print("path=",path)
ifstep<min:
min=step
minpath=path[:]
else:
if(x+1ink)and(yink):
if(b[x+1][y]==0)and(a[x+1][y]==0):
b[x+1][y]=1
path.append([x+1,y])
step+=1
nextone(x+1,y)
step-=1
path.remove([x+1,y])
b[x+1][y]=0#回溯
if(xink)and(y+1ink):
if(b[x][y+1]==0)and(a[x][y+1]==0):
b[x][y+1]=1
path.append([x,y+1])
step+=1
nextone(x,y+1)
step-=1
path.remove([x,y+1])
b[x][y+1]=0#回溯
if(x-1ink)and(yink):
if(b[x-1][y]==0)and(a[x-1][y]==0):
b[x-1][y]=1
path.append([x-1,y])
step+=1
nextone(x-1,y)
step-=1
path.remove([x-1,y])
b[x-1][y]=0#回溯
if(xink)and(y-1ink):
if(b[x][y-1]==0)and(a[x][y-1]==0):
b[x][y-1]=1
path.append([x,y-1])
step+=1
nextone(x,y-1)
step-=1
path.remove([x,y-1])
b[x][y-1]=0#回溯
nextone(0,0)
print()
print("min=",min)
print("minpath=",minpath)
print("pathnum=",pathnum)
⑸ python演算法問題
你好,答案如下所示。
如圖所示
希望你能夠詳細查看。
如果你有不會的,你可以提問
我有時間就會幫你解答。
希望你好好學習。
每一天都過得充實。
⑹ 一道演算法題,用python初始化一顆二叉樹並求解其最短路徑的值
二叉樹演算法,可能按照你的需求不是很多:
下面是我用的一個,不過你可以借鑒一下的:
# -*- coding: cp936 -*-
import os
class Node(object):
"""docstring for Node"""
def __init__(self, v = None, left = None, right=None, parent=None):
self.value = v
self.left = left
self.right = right
self.parent = parent
class BTree(object):
"""docstring for BtTee """
def __init__(self):
self.root = None
self.size = 0
def insert(self, node):
n = self.root
if n == None:
self.root = node
return
while True:
if node.value <= n.value:
if n.left == None:
node.parent = n
n.left = node
break
else:
n = n.left
if node.value > n.value:
if n.right == None:
n.parent = n
n.right = node
break
else:
n = n.right
def find(self, v):
n = self.root # http://yige.org
while True:
if n == None:
return None
if v == n.value:
return n
if v < n.value:
n = n.left
continue
if v > n.value:
n = n.right
def find_successor(node):
'''查找後繼結點'''
assert node != None and node.right != None
n = node.right
while n.left != None:
n = n.left
return n
def delete(self, v):
n = self.find(v)
print "delete:",n.value
del_parent = n.parent
if del_parent == None:
self.root = None;
return
if n != None:
if n.left != None and n.right != None:
succ_node = find_successor(n)
parent = succ_node.parent
if succ_node == parent.left:
#if succ_node is left sub tree
parent.left = None
if succ_node == parent.right:
#if succ_node is right sub tree
parent.right = None
if del_parent.left == n:
del_parent.left = succ_node
if del_parent.right == n:
del_parent.right = succ_node
succ_node.parent = n.parent
succ_node.left = n.left
succ_node.right = n.right
del n
elif n.left != None or n.right != None:
if n.left != None:
node = n.left
else:
node = n.right
node.parent = n.parent
if del_parent.left == n:
del_parent.left = node
if del_parent.right == n:
del_parent.right = node
del n
else:
if del_parent.left == n:
del_parent.left = None
if del_parent.right == n:
del_parent.right = None
def tranverse(self):
def pnode(node):
if node == None:
return
if node.left != None:
pnode(node.left)
print node.value
if node.right != None:
pnode(node.right)
pnode(self.root)
def getopts():
import optparse, locale
parser = optparse.OptionParser()
parser.add_option("-i", "--input", dest="input", help=u"help name", metavar="INPUT")
(options, args) = parser.parse_args()
#print options.input
return (options.input)
if __name__ == '__main__':
al = [23, 45, 67, 12, 78,90, 11, 33, 55, 66, 89, 88 ,5,6,7,8,9,0,1,2,678]
bt = BTree()
for x in al :
bt.insert(Node(x))
bt.delete(12)
bt.tranverse()
n = bt.find(12)
if n != None:
print "find valud:",n.value