導航:首頁 > 編程語言 > pythonbug提交

pythonbug提交

發布時間:2022-04-17 12:37:55

python代碼bug求解

錯誤在於下一次迭代時,n會變成下一個奇數5,

而18行的代碼通過傳遞參數n鎖定了n值

可以通過輸出一些log查看:

以下代碼通過把lambda展開成普通函數,並輸出調用filter函數的參數來查看,比較一下就能明白了。

def_not_divisible(n):
deffunc(x):
print("!!!!!!!!!!!!!")
print(x,n)
returnx%n>0
returnfunc
defprimes():
yield2
print(1111)
it=_odd_iter()
whileTrue:
n=next(it)
print(2222)
yieldn
deffunc(x):
print("!!!!!!!!!!!!!")
print(x,n)
returnx%n>0
it=filter(func,it)
#it=filter(_not_divisible(n),it)

❷ python的神奇bug

運行了一下。錯誤主要是「引號」

if __name__ == '__main__':
orgin_path = r'E:222' # 這個是數據源 文件夾
moved_path = original_path # 這個是想要移動到哪裡的的文件夾
move_file(orgin_path,moved_path)


❸ 關於python基礎的bug

說"set不可以放可變對象",有那麼點對,但意思又不嚴謹。
也許精確點要說"python標准庫的set不能放python定義的可變對象"
(python定義的可變對象:是指id()返回值不變但其餘內容可變的對象;id()返回值和內容都不變的為"不可變對象")
python3.6版規定set的成員必須要返回散列值(鍵值),只要成員對象實現了__hash__()方法都可以被添加到set中。python提供的一些不可變對象,比如數字、字元串、元組、bytes位元組串都有散列值,所以這些可以放到set中。
set([1,2,3])不是單純的"放入list", 而是(以set的構造方法,把list中的元素給迭代)放入list「。
相當於s.add(1); s.add(2); s.add(3); 三句三個元素。
list本身沒有散列值,就不允許s=set(); s.add([1,2,3])這樣list作為單個元素放入set。
不是bug,而是誤解set()的函數對象方法的具體作用..

❹ python編程bug

"""
if rname == '<ipython console>' or rname.endswith('<string>'):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xca in position 38: ordinal not in range(128)
"""
似乎rname是一個unicode的串, 在與"<ipython consone>", "<string>" 進行比較時先進行了轉換,但其中包含非ascii字元導致轉換異常的問題。
建議簡單地改成:
if rname == u'<ipython console>' or rname.endswith(u'<string>'):

❺ python 2.7 發現了 bug 怎麼辦

不應該出現base64編碼不一致的現象,可以把代碼發出來 建議不要再使用Python2.6,而是使用最新版本的Python2.7 如果原來存在bug在最新版中很有可能被修復

❻ python http介面測試腳本怎麼寫

1. 用Python封裝被測試介面,對於HTTP介面我們通常會採用 GET和POST 2種調用方式去訪問,所以必須把這2種方式都封裝進去
# -*- coding:gb2312 -*-
import urllib2,urllib
'''
函數說明:url 特殊字元編碼轉換
作者:xiaonan
輸入參數:待轉換的字元串數據
輸出參數:轉換完成後的字元串數據
'''
def urlcode(data):
return urllib2.quote(str(data))

'''
函數說明:獲取用戶信息的API介面
作者:xiaonan
輸入參數:用戶名(uname),HTTP介面調用方式(GET或者POST)
輸出參數:HTTP介面調用返回數據
'''
def GetUserInfo(uname,method):
if method == 'GET':
url = 'http://ip:port/interface/GetUserInfo.php?uname='+urlcode(uname)
result = urllib2.urlopen(url).read()
return result

if method == 'POST':
url = 'http://ip:port/interface/GetUserInfo.php'
values = {'uname' : uname}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
result = response.read()
return result
2. 編寫、組織測試腳本, 准備測試數據
根據Testcase的具體業務邏輯用事先准備好的測試數據去調用封裝好的API介面,驗證實際返回結果是否與預期返回結果一致.
測試數據可以以各種形式存放,如Excel數據表:
TestCaseName uname method Expected Result
TestCase1 aaaa GET ....
TestCase2 aaaa POST ....
TestCase3 bbbb GET ....
... ... ... ....
# -*- coding:gb2312 -*-
import xlrd
'''
函數說明: Testcase 腳本
作者:xiaonan
輸入參數:測試數據,API介面
輸出參數:測試日誌,測試報告
'''
def GetUser():
bk = xlrd.open_workbook(excel文件名稱) # 打開excel文件
sh = bk.sheet_by_name(excel表名)# 打開excel表
nrows = sh.nrows # 獲取總行數
for i in range(1,nrows):
TestCase = sh.cell_value(i,0)
uname = sh.cell_value(i,1)
method = sh.cell_value(i,2)
EX_Result=sh.cell_value(i,3)
WriterLog('Testcase Name:'+TestCase+'TestData: uname = '+uname+' ,method = '+method+' ,EX_Result = ' + ,EX_Result) # 寫測試日誌
AC_result = GetUserInfo(uname,method) # 調用API介面
WriterLog('AC_result = ' + AC_result) # 寫測試日誌
if EX_Result == AC_result: #實際結果與預期結果對比
WriterLog(...) #寫測試日誌
WriterReport(...)#寫測試報告
else
WriterLog(...)#寫測試日誌
WriterReport(...)#寫測試報告

3. 組織測試套,用驅動文件去調用執行所有測試套件,完成相關測試,並生成測試日誌及測試報告.
# -*- coding:gb2312 -*-
'''
函數說明: Testsuit Driver驅動腳本
作者:xiaonan
輸入參數:TestCase 腳本
輸出參數:測試日誌,測試報告

'''
if __name__ == '__main__':
...
WriterLog() #寫測試日誌
GetUser() # TestCase 腳本
...
...
Report(....) # 統計匯總所有測試報告數據,以文件或頁面形式呈現.
4. 執行測試腳本,分析測試結果. 根據測試報告,如果有Bug則提交.

❼ 如何解決python程序的bug

環境就是程序運行的上下文(context)。我理解是程序 初始化 或者 運行時 設置的一些的變數。 最明顯的就是linux的全局變數,你可以直接登錄伺服器執行env命令查看當前環境中的變數。 如果你的程序是從環境上獲取的密碼,可以看下配置文件中設置...

❽ python是如何被開發的

本文出自《Python高手之路》中的Doug Hellmann訪談。

我曾經有幸和Doug Hellmann一起工作過數月。他在DreamHost是一位非常資深的軟體開發工程師,同時他也是OpenStack項目的貢獻者。他發起過關於Python的網站Python Mole of the Week(),也出版過一本很有名的Pyhton書The Python Standard Library By Example(),同時他也是Python的核心開發人員。我曾經咨詢過Doug關於標准庫以及庫的設計與應用等方面的問題。
當你從頭開發一個Python應用時,如何邁出第一步呢?它和開發一個已有的應用程序有什麼不同?
從抽象角度看步驟都差不多,但是細節上有所不同。相對於對比開發新項目和已有項目,我個人在對應用程序和庫開發的處理方式上有更多的不同。
當我要修改已有代碼時,特別是這些代碼是其他人創建的時,起初我需要研究代碼是如何工作的,我需要改進哪些代碼。我可能會添加日誌或是輸出語句,或是用pdb,利用測試數據運行應用程序,以便我理解它是如何工作的。我經常會做一些修改並測試它們,並在每次提交代碼前添加可能的自動化測試。
創建一個新應用時,我會採取相同的逐步探索方法。我先創建一些代碼,然後手動運行它們,在這個功能可以基本調通後,再編寫測試用例確保我已經覆蓋了所有的邊界情況。創建測試用例也可以讓代碼重構更容易。
這正是smiley()的情況。在開發正式應用程序前,我先嘗試用Python的trace API寫一些臨時腳本。對於smiley我最初的設想包括一個儀表盤並從另一個運行的應用程序收集數據,另一部分用來接收通過網路發送過來的數據並將其保存。在添加幾個不同的報告功能的過程中,我意識到重放已收集的數據的過程和在一開始收集數據的過程基本是一樣的。於是我重構了一些類,並針對數據收集,資料庫訪問和報告生成器創建了基類。通過讓這些類遵循同樣的API使我可以很容易地創建數據收集應用的一個版本,它可以直接將數據寫入資料庫而無需通過網路發送數據。
當設計一個應用程序時,我會考慮用戶界面是如何工作的,但對於庫,我會專注於開發人員如何使用其API。通過先寫測試代碼而不是庫代碼,可以讓思考如何通過這個新庫開發應用程序變得更容易一點兒。我通常會以測試的方式創建一系列示常式序,然後依照其工作方式去構建這個庫。
我還發現,在寫任何庫的代碼之前先寫文檔讓我可以全面考慮功能和流程的使用,而不需要提交任何實現的細節。它還讓我可以記錄對於設計我所做出的選擇,以便讀者不僅可以理解如何使用這個庫,還可以了解在創建它時我的期望是什麼。這就是我用在stevedore上的方法。
我知道我想讓stevedore能夠提供一組類用來管理應用程序的插件。在設計階段,我花了些時間思考我見過的使用插件的通用模式,並且寫了幾頁粗略的文檔描述這些類應該如何使用。我意識到,如果我在類的構造函數中放最復雜的參數,方法map()幾乎是可互換的。這些設計筆記直接寫進了stevedore官方文檔的簡介里,用來解釋在應用程序中使用插件的不同模式和准則。
將一個模塊加入Python標准庫的流程是什麼?
完整的流程和規范可以在Python Developer's Guide()中找到。
一個模塊在被加入Python標准庫之前,需要被證明是穩定且廣泛使用的。模塊需要提供的功能要麼是很難正確實現的,要麼是非常有用以至於許多開發人員已經創建了他們自己不同的變種。API應該非常清晰並且它的實現不能依賴任何標准庫之外的庫。
提議一個新模塊的第一步是在社區通過python-ideas郵件列表非正式地了解一下大家對此的感興趣程度。如果回應很積極,下一步就是創建一個Python增強提案(PythonEnhancement Proposal,PEP),它包括添加這個模塊的動因,以及如何過渡的一些實現細節。
因為包的管理和發現工作已經非常穩定了,尤其是pip和Python Package Index(PyPI),因此在標准庫之外維護一個新的庫可能更實用。單獨的發布使得對於新功能和bug修復(bugfix)的更新可以更頻繁,對於處理新技術或API的庫來說這尤其重要。
標准庫中的哪三個模塊是你最想人們深入了解並開始使用的?
最近我做了許多關於應用程序中動態載入擴展方面的工作。我使用abc模塊為那些作為抽象基類進行的擴展定義API,以幫助擴展的作者們了解API的哪些方法是必需的,哪些是可選的。抽象基類已經在其他一些語言中內置了,但我發現很多Python程序員並不知道Python也有。
bisect模塊中的二分查找演算法是個很好的例子,一個廣泛使用但不容易正確實現的功能,因此它非常適合放到標准庫中。我特別喜歡它可以搜索稀疏列表,且搜索的值可能並不在其中。
collections模塊中有許多有用的數據結構並沒有得到廣泛使用。我喜歡用namedtuple來創建一些小的像類一樣的數據結構來保存數據但並不需要任何關聯邏輯。如果之後需要添加邏輯的話,可以很容易將namedtuple轉換成一個普通的類,因為namedtuple支持通過名字訪問屬性。另一個有意思的數據結構是ChainMap,它可以生成良好的層級命名空間。ChainMap能夠用來為模板解析創建上下文或者通過清晰的流程定義來管理不同來源的配置。
許多項目(包括OpenStack)或者外部庫,會在標准庫之上封裝一層自己的抽象。例如,我特別想了解對於日期/時間的處理。對此你有什麼建議嗎?程序員應該堅持使用標准庫,還是應該寫他們自己的函數,切換到其他外部庫或是開始給Python提交補丁?
所有這些都可以。我傾向於避免重復造輪子,所以我強烈主張貢獻補丁和改進那些能夠用來作為依賴的項目。但是,有時創建另外的抽象並單獨維護代碼也是合理的,不管在應用程序內還是作為一個新的庫。
你提到的例子中,OpenStack里的timeutils模塊就是對Python的datetime模塊的一層很薄的封裝。大部分功能都簡短且簡單,但通過將這些最常見的操作封裝為一個模塊,我們可以保證它們在OpenStack項目中以一致的方式進行處理。因為許多函數都是應用相關的,某種意義上它們強化了一些問題決策,例如,字元串時間戳格式或者「現在」意味著什麼,它們不太適合作為Python標准庫的補丁或者作為一個通用庫發布以及被其他項目採用。
與之相反,我目前正致力於將OpenStack的API服務項目從早期創建時使用的WSGI框架轉成採用一個第三方Web開發框架。在Python中開發WSGI應用有很多選擇,並且當我們可能需要增強其中一個以便其可以完全適應OpenStack API伺服器的需要時,將這些可重用的修改貢獻對於維護一個「私有的」框架似乎更可取。
當從標准庫或其他地方導入並使用大量模塊時,關於該做什麼你有什麼特別的建議嗎?
我沒有什麼硬性限制,但是如果我有過多的導入時,我會重新考慮這個模塊的設計並考慮將其拆到一個包中。與上層模塊或者應用程序模塊相比,對底層模塊的這種拆分可能會發生得更快,因為對於上層模塊我期望將更多片段組織在一起。
關於Python 3,有什麼模塊是值得一提而且能令開發人員有興趣深入了解的?
支持Python 3的第三方庫的數量已經到了決定性的時刻。針對Python 3開發新庫或應用程序從未如此簡單過,而且幸虧有3.3中加入的兼容性功能使同時維護對Python 2.7的支持也很容易。主要的Linux發行版正在致力於將Python 3默認安裝。任何人要用Python創建新項目都應該認真考慮對Python 3的支持,除非有尚未移植的依賴。目前來說,不能運行在Python 3上的庫基本會被視為「不再維護」。
許多開發人員將所有的代碼都寫入到應用程序中,但有些情況下可能有必要將代碼封裝成一個庫。關於設計、規劃、遷移等,做這些最好的方式是什麼?
應用程序就是「膠水代碼」的集合用來將庫組織在一起完成特定目的。起初設計時可以將這些功能實現為一個庫,然後在構建應用程序時確保庫的代碼能夠很好地組織到邏輯單元中,這會讓測試變得更簡單。這還意味著應用程序的功能可以通過庫進行訪問,並且能夠被重新組合以構建其他應用程序。未能採用這種方法的話意味著應用程序的功能和用戶界面的綁定過於緊密,導致很難修改和重用。
對於計劃開始構建自己的Python庫的人們有什麼樣的建議呢?
我通常建議自頂向下設計庫和API,對每一層應用單一職責原則(Single Responsibility Principle,SRP)()這樣的設計准則。考慮調用者如何使用這個庫,並創建一個API去支持這些功能。考慮什麼值可以存在一個實例中被方法使用,以及每個方法每次都要傳入哪些值。最後,考慮實現以及是否底層的代碼的組織應該不同於公共API。
SQLAlchemy是應用這些原則的絕好例子。聲明式ORM、數據映射和表達式生成層都是單獨的。開發人員可以自行決定對於API訪問的正確的抽象程度,並基於他們的需求而不是被庫的設計強加的約束去使用這個庫。
當你隨機看Python程序員的代碼時遇到的最常見的編程錯誤是什麼?
Python的習慣用法和其他語言的一個較大的不同在於循環和迭代。例如,我見過的最常見的反模式是使用for循環過濾一個列表並將元素加入到一個新的列表中,然後再在第二個循環中處理這個結果(可能將列表作為參數傳給一個函數)。我通常建議將過濾循環改成生成器表達式,因為生成器表達式,更有效也更容易理解。列表的組合也很常見,以便它們的內容可以以某種方式一起被處理,但卻沒有使用itertools.chain()。
還有一些我在代碼評審時給出的更細小的建議,例如,使用dict()而不是長的if:then:else塊作為查找表,確保函數總是返回相同的類型(如一個空列表而不是None),通過使用元組和新類將相關的值合並到一個對象中從而減少函數的參數,以及在公共API中定義要使用的類而不是依賴於字典。
有沒有關於選擇了一個「錯誤」的依賴的具體的例子是你親身經歷或目睹過的?
最近,我有個例子,pyparsing()的一個新發布取消了對Python 2的支持,這給我正在維護的一個庫帶來了一點兒小麻煩。對pyparsing的更新是個重大的修改,而且是明確標識成這樣的,但是因為我沒有在對cliff()的設置中限制依賴版本號,所以pyparsing的新發布給cliff的用戶造成了問題。解決方案就是在cliff的依賴列表中對Python 2和Python 3提供不同的版本邊界。這種情況突顯了理解依賴管理和確保持續集成測試中適當的測試配置的重要性。
你怎麼看待框架?
框架像任何工具類型一樣。它們確實有幫助,但在選擇框架時要特別謹慎,應確保它能夠很好地完成當前的工作。
通過抽取公共部分到一個框架中,你可以將你的開發精力專注於應用中獨特的方面。通過提供許多類似運行在開發模式或者寫一個測試套件這樣的引導代碼,它們還可以幫你讓一個應用程序迅速達到一個可用的狀態而不是從頭開發。它們還可以激勵你在應用程序開發過程中保持一致,這意味著最終你的代碼將更易於理解且更可重用。
雖然使用框架時還有其他一些潛在的缺點需要注意。決定使用某個特定框架通常能夠反映應用程序本身的設計。如果設計的限制不能從根本上符合應用程序的需求,那麼選擇錯誤的框架會令應用的實現變得更難。如果你試著使用與框架建議不同的模式或慣用方式,你最終將不得不同框架做斗爭。

❾ Python代碼bug求助

傳文本吧,圖片太麻煩了

❿ python代碼運行出bug,求大神解答

為了使用optimize模塊,必須先導入:from scipy import optimize
另外變數np和r必須先初始化。

閱讀全文

與pythonbug提交相關的資料

熱點內容
dns使用加密措施嗎 瀏覽:172
php獨立運行 瀏覽:530
手機sh執行命令 瀏覽:727
雲伺服器的角色 瀏覽:733
單片機頻率比例 瀏覽:840
我的世界伺服器如何關閉正版驗證 瀏覽:504
如何查roid伺服器上的 瀏覽:130
安卓手機主板如何撬晶元不掉電 瀏覽:249
php各個框架的優缺點 瀏覽:101
php1100生成數組 瀏覽:359
以後做平面設計好還是程序員好 瀏覽:552
雲伺服器應用管理 瀏覽:438
飢荒雲伺服器搭建過程 瀏覽:186
可編程式控制制器優點 瀏覽:99
壓縮垃圾車說明書 瀏覽:28
五輪書pdf 瀏覽:802
單片機定時流水中斷系統流水燈 瀏覽:701
u8如何連接伺服器配置 瀏覽:68
動力在於緩解壓力 瀏覽:867
報考科一用什麼app 瀏覽:346