2016-08-03 44 views
0

我正在編寫一個函數,它對元組列表(Employee記錄)進行搜索查詢,然後根據查詢參數進行輸出。例如,在我的問題中,我搜索的薪資範圍最低爲30000,最高爲100000,我希望這會輸出此薪資範圍內的員工姓名,但是它會給出未找到結果的輸出,這是不正確的,因爲這個工資範圍內有很多員工。程序輸出與預期不一樣 - 在元組列表中搜索int值

作爲比較,最小0和最大100000會輸出所有記錄是正確的,但是當將最小值設置爲30000以上時,它始終不會輸出找到的結果,事實上這是正確的,因爲有很多員工工資在超過30000的元組列表中。

下面是我認爲會導致問題的代碼部分(不是發佈整個代碼,因爲這是一個課程作業項目,我不想鼓勵對我的作品進行抄襲):

這實際上應該輸出結果,因爲這個工資範圍內有員工,但很明顯,代碼中出現了問題,我看不出什麼是什麼s是!

我希望有人能幫忙,這一直困擾着我一段時間,我真的不能找到解決方案!

回答

1

我想你的程序在第一個元組被處理後退出。薪資範圍之外的第一個元組是?如果是這樣,它跳過if語句並轉到elif。 querFound仍然是假的,x仍然是0,所以它打印並退出。


我的建議是用它來取代你的整個while循環的循環:

for t in editTup: 
    sal = int(t[2]) 
    if sal > salMin and sal < salMax: 
     print(t[4] + " " + t[3]) 
     querFound = True 
if not querFound: 
    print('No results found') 
+0

你可能是正確的,第一份工資是27500 – RonB7

+0

是的,你確實是正確的,27501產出什麼,但27499如預期的輸出,我將如何解決這個問題? – RonB7

+0

請參閱上面的編輯。但是,如果你想讓代碼更接近你開始的代碼,只需在while循環外面加上'if querFound == false'即可。 – Noam