2016-09-02 47 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