2015-09-19 5 views
1

Я получил этот код, и я не думаю, что я действительно понимаю, как по модулю возвращает остаток, не хорошо в математике ..Пайтона недоразумение

Вот код:

#import the datetime class 
import datetime 

#declare and initialize variables 
strDeadline = "" 
totalNbrDays = 0 
nbrWeeks = 0 
nbrDays = 0 

#Get Today's date 
currentDate = datetime.date.today() 

#Ask the user for the date of their deadline 
strDeadline = input("Please enter the date of your deadline (mm/dd/yyyy): ") 

deadline = datetime.datetime.strptime(strDeadline,"%m/%d/%Y").date() 

#Calculate number of days between the two dates 
totalNbrDays = deadline - currentDate 

#For extra credit calculate results in weeks & days 

nbrWeeks = totalNbrDays.days/7 

#The modulo will return the remainder of the division 
#which will tell us how many days are left 
nbrDays = totalNbrDays.days%7 

#display the result to the user 

print("You have %d weeks" %nbrWeeks + " and %d days " %nbrDays + "until your deadline.") 
+4

Каков ваш вопрос, каков ожидаемый результат вашего кода и каков фактический результат? – Psytho

ответ

2

Когда вы делите целое число на другое целое число, оно не всегда равномерно. Например, 23/7 предоставит вам остаток от 2, потому что 23 = 7 * 3 + 2. Modulo дает вам остальную часть операции деления ... 23 % 7 = 2. Это полезно, если у вас есть несколько дней, продолжительность которых превышает продолжительность недели. Вы можете использовать целочисленное деление (что означает, что частное будет целое число), чтобы рассчитать количество недель 23/7 = 3, а затем по модулю, чтобы рассчитать количество дней, оставшихся до 23 % 7 = 2, сообщив, что 23 дня равно 3 неделям и 2 дням.

2

По модулю используется остаток выражения.

Например, если вы делаете 15% 7, вы получаете 1. Это потому, что 7 + 7 + 1 = 15.

В вашем коде вы принимаете общее количество дней (totalNbrDays.days) и делите его на количество дней в неделю (7). Давайте используем пример из 30 для общего количества дней. 30% 7 будет равно 2, потому что 7 + 7 + 7 + 7 + 2 = 30, или (7 * 4) = 28 и 30-28 = 2.

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