2016-09-02 2 views
0

Я только начал изучать, как кодировать, и мне была назначена проблема, с которой я застрял много часов, и надеялся, что я смогу получить хоть какие-то намеки, чтобы решить проблему , Главным моментом этого упражнения является практика деления и модуля. Мы можем использовать базовые утверждения, но ничего не представляем, как условные выражения или что-то еще, так как мы не дошли до этого.Подразделение и оператор Modulo

Мне нужно, чтобы пользователь вводил # от 1 до 25, а затем моя программа сообщит им, какое устройство и строка находятся в этом номере. Мне удалось заставить код работать для строк, но я не могу выяснить, как получить номер единицы.

Вот мой код:

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

Я пробовал много вещей, за единицу, но ни один из них не работал, так что я оставил это поле пустым. Я был бы признателен за любые намеки, которые любой может мне дать. Спасибо за любую помощь.

image

Edit: я понял, что я должен попробовать и по крайней мере показать, какие идеи я пробовал. Если я делаю регулярный модул с #% 5, это работает для всего, кроме кратных 5 полностью справа. Я также попытался реализовать строку #, каждая из которых имеет #, но ничего не получила. Я также пробовал что-то подобное, делясь на десятичное число, отливая его как int, затем используя modulo, но не смог и т. Д. И т. Д. \

Редактировать: Извините, я понял, что загрузил неправильное изображение.

+0

EM просто использовать этот MODULO xD ** unit = shelfNumber% 5 ** Почему? Потому что у ваших рядов было 5 предметов, поэтому каждый предмет, разделенный без отдыха на 5, получил 0 единиц, они с остатком 1 получили 1 единицу и т. Д. –

+0

Но те, которые кратные 5, должны быть в блоке 5, а не в единицах 0 Редактировать: Извините, я загрузил неправильное изображение! – Neri

+0

Но если я это сделаю, у всех остальных будут неправильные единицы. Как 1, должно быть в 1-м блоке. (1% 5) + 5 сделало бы это 6, а не 1. – Neri

ответ

1

Эта проблема была бы проще, если бы все были countrd от 0, а не от 1. То есть, если номера строк и единиц были от 0 до 4 вместо 1 до 5, и если входное значение было от 0 до 24 вместо 1 до 25.

в этом случае мы бы просто написать:

row = shelfNumber/5 
unit = shelfNumber % 5 

Поскольку все начинается ftom 1 («это один индексированные» в обычном жаргоне), shelfNumber это один больше, чем то, что формула и нам нужно сделать row и unit один больше, чем мы вычислили.

Но нет никаких проблем фиксации, что:

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

В Python 3, вы должны были бы написать // InstEd из /, и что будет работать с достаточно недавно Python 2.

+0

Хотя OP, вероятно, не разрешено использовать его, возможно, стоит упомянуть 'divmod' builtin –

+0

@ninja: может быть. Но это затмевает математику, не предоставляя никакого функционального преимущества, и 'row, unit = map (lambda a: a + 1, divmod (shelfUnit - 1, 5))' приглашает обвинение в обфускации, если оно даже работает. – rici

Смежные вопросы