2016-09-02 76 views
0

我剛開始學習如何編寫代碼,並且我已經被分配了一個問題,我一直堅持了很多個小時,並希望至少能夠得到一些提示來解決問題。這個練習的要點是練習分割和模數。我們可以使用基本的陳述,但是沒有像條件或任何東西那樣的幻想,因爲我們還沒有到達這一點。劃分和模運算符

我需要一個用戶輸入一個#從1 - 25,然後我的程序會讓他們知道哪個單位和行的數字是在我設法讓代碼工作的行,但我不能弄清楚如何獲取單位號碼。

這裏是我的代碼:

shelfNumber = int(raw_input('What is the shelf number? ')) 
row = int(shelfNumber/5.1) + 1 
unit = 

我已經試過了單位很多東西,但沒有人制定出來的,所以我離開它留空。我很感激任何人都可以給我的提示。感謝您的任何幫助。

image

編輯:我意識到,我應該嘗試至少說明我已經試過哪些想法。如果我使用#%5進行常規模數,那麼除了5的倍數以外,它適用於所有情況。我也嘗試過每個#都實現#的行,但是沒有得到任何地方。我也試過類似的東西,除以十進制,將其轉換爲int,然後使用模但失敗等。等等。\

編輯:對不起,我意識到我上傳了錯誤的圖像。

+0

EM只是用工作這個MODULO xD **單位= shelfNumber%5 ** 爲什麼?因爲你的排有5個物品,所以每個物品分成5個沒有休息的有0個單位,剩下的1個有1個單位等...... –

+0

但是5的倍數必須在單位5中,而不是單位0編輯:對不起,我上傳了錯誤的圖片! – Neri

+0

但是,如果我這樣做,其他所有人都會有錯誤的單位。像1必須在單元1中。(1%5)+ 5會使它變成6而不是1。 – Neri

回答

1

如果所有內容都是從0而不是從1反制,那麼這個問題會更容易。也就是說,如果行和單位數是0到4而不是1到5,並且輸入值是0到24而不是1至25

在這種情況下,我們會這樣寫:

row = shelfNumber/5 
unit = shelfNumber % 5 

既然一切開始ftom 1(在通常的行話「是一個索引」),shelfNumber比什麼公式一個更大需要,我們需要使rowunit比我們計算的大一點。

但目前還沒有固定的麻煩是:

row = (shelfNumber - 1)/5 + 1 
unit = (shelfNumber - 1) % 5 + 1 

在Python 3,你需要寫// insted的的/,這將有一個合理的最近的Python 2.

+0

儘管OP可能不被允許使用它可能值得一提的是'divmod'內建 –

+0

@ninja:也許吧。但它掩蓋了數學而沒有提供任何功能優勢,而'row,unit = map(lambda a:a + 1,divmod(shelfUnit - 1,5))'會引發混淆的指責,如果它甚至起作用的話。 – rici