2016-07-28 88 views
1

我想知道你是否能夠提供幫助,因爲我一直在尋找這個好半小時,而我完全困惑不解,我想我必須錯過一些東西,所以我希望你可以在這裏說明一些事情。最小和最大查詢無法正常工作(Python 3.5)

在我的程序的這個區域中,我編寫了一個查詢,它將搜索人員薪水的元組列表。列表中的每個元組都是一個單獨的人員詳細記錄,因此我使用了兩個索引;一個用於循環記錄,另一個用於員工的工資。我的目標是讓該計劃向你詢問最低和最高工資,並且讓該計劃打印出該工資範圍內僱員的姓名。

這一切似乎工作正常,直到我意識到,作爲最大值輸入值「100000」時,查詢將不輸出任何內容。我非常困惑,我嘗試輸入「999999」,然後運行,所有記錄都打印出來。我能想到的唯一的事情就是程序忽略了額外的數字,我無法弄清楚爲什麼會這樣?!

下面是我的代碼,爲特定的部分和輸出的最大值999999(我寧願不粘貼整個程序,因爲這是一個課程作品項目,我想防止任何人在同一課程潛在複製我的工作,對不起,如果這使得我的問題不清楚!):

所有記錄中的最高工資是55000,因此,爲什麼它沒有任何意義,至少0和最大100000不起作用,但最大999999呢!

如果需要更多信息請幫助!這可能似乎不清楚,但正如我上面所說的,我不希望任何人從課堂上剽竊,我的工作因此而無效!所以我試圖在沒有發佈我的代碼的情況下詢問這個問題!

回答

1

鑑於您使用了print函數(而不是Python 2 print語句),它看起來像是在編寫Python 3代碼。在Python 3中,input返回str。我猜你的數據也存儲在str(否則比較會提高TypeError)工資。您需要將兩個存儲的值和input的結果轉換爲int,以便執行數字比較,而不是ASCII碼比較。

+0

謝謝!我完全明白你說的是對的,但是我對如何將存儲值轉換爲整數有點不確定,因爲課程要求我從.txt文件導入記錄,所以它們以str類型和我不知道我是如何改變這一點的! – RonB7

+0

我通過將用戶輸入更改爲int(input(「」))''來輕鬆轉換用戶輸入,因此不需要擔心 – RonB7

+0

@RJB:在解析'.txt'文件的代碼中,您需要確保它是將相關值轉換爲「int」。例如,如果文件只是空格分隔的文本,你可以使用'record = line.split()','record [2] = int(record [2])','tuplist.append(tuple(record)) ' – ShadowRanger

1

當您從Python的標準輸入中讀入數據時,無論輸入什麼內容,都會以字符串形式接收輸入。這意味着您的比較功能是:

if tuplist[x][2] > "0" and tuplist[x][2] < "999999" : 

您能否看到現在的問題?因爲這是一項家庭作業,我不想馬上給你答案。