Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 May 03

K

Kefirchick in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ибо задачку я таки сдал, написав лютый костыль, на который убил времени в 10 раз больше,чем на решение самой задачи. Хотел узнать, это баг проверяющей системы или специальная ловушка для проверки корректности ввода?
источник

K

Kefirchick in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
def capital(x, p, y):
   """ Определяет, через сколько лет (year) вклад (x),
       положенный под процент (p), составит не менее (y) рублей.
   """
   
   year = 0
   while y > x:
       x += (x*0.01*p)
       x = int(x * 100)/100 #отбрасываем дробные части копеек
       year += 1
   return print(year)
   
x, p, y = map(int, input().split())
capital(x, p, y)

вот моё решение, подскажите как сделать проверку на вводимые данные?
#вопрос
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Kefirchick
def capital(x, p, y):
   """ Определяет, через сколько лет (year) вклад (x),
       положенный под процент (p), составит не менее (y) рублей.
   """
   
   year = 0
   while y > x:
       x += (x*0.01*p)
       x = int(x * 100)/100 #отбрасываем дробные части копеек
       year += 1
   return print(year)
   
x, p, y = map(int, input().split())
capital(x, p, y)

вот моё решение, подскажите как сделать проверку на вводимые данные?
#вопрос
сохранять ввод в переменную. парсить, проверять на требования, например что в результате split(' ')  там 3 значения.
if __name__ == '__main__':
   input_values = input().split(' ')
   if len(input_values) == 3:
       x, p, y = map(int, input_values)
       capital(x, p, y)
   else:
       print(0)
источник

EZ

Evgeniy Zebolov in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
сохранять ввод в переменную. парсить, проверять на требования, например что в результате split(' ')  там 3 значения.
if __name__ == '__main__':
   input_values = input().split(' ')
   if len(input_values) == 3:
       x, p, y = map(int, input_values)
       capital(x, p, y)
   else:
       print(0)
такой инпут же не сработает, когда на вход ему подадут три числа с переводом строки между ними
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
а должен?
источник

EZ

Evgeniy Zebolov in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
в этом и есть изначальный вопрос
источник

K

Kefirchick in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
сохранять ввод в переменную. парсить, проверять на требования, например что в результате split(' ')  там 3 значения.
if __name__ == '__main__':
   input_values = input().split(' ')
   if len(input_values) == 3:
       x, p, y = map(int, input_values)
       capital(x, p, y)
   else:
       print(0)
я прошел валидацию таким образом:
l = list(map(int,input().split()))
lenght = len(l)

if lenght == 3:
   x = l[0]
   p = l[1]
   y = l[2]
else:
   print(0)

capital(x, p, y)

спасибо за совет =)
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Kefirchick
я прошел валидацию таким образом:
l = list(map(int,input().split()))
lenght = len(l)

if lenght == 3:
   x = l[0]
   p = l[1]
   y = l[2]
else:
   print(0)

capital(x, p, y)

спасибо за совет =)
кстати, функция которая что то возвращает должна не принтовать значение, а возвращать, а принтовать стоит в той части кода, где вызывается.
return year

в main:
print(capital(x, p, y))

потому что сейчас return возвращает результат отработки print - None
источник

K

Kefirchick in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
просто не ожидал такого в контесте, до этого сдавал все задачки сразу и проблем с вводом не возникало. Так и задумано или сбойный автотест?))
источник

K

Kefirchick in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
О, спасибо,буду знать @olegmakarikhin
источник

AA

AА AА in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Ребят, до сих пор не пойму зачем эта проверка if name = “__main__” делается. Что он даст, что запущено из основной программы, а не модуля?
источник

K

Kefirchick in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Evgeniy Zebolov
я так и решил)
о, у меня тоже пробегает сначала до правого края, считая клетки, затем возвращается в исходную позицию и уже начинает рисовать :D
источник

EZ

Evgeniy Zebolov in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
AА AА
Ребят, до сих пор не пойму зачем эта проверка if name = “__main__” делается. Что он даст, что запущено из основной программы, а не модуля?
Да. В одной из лекций был пример. Человек, пишущий модуль может внутри него тестировать работу функций и писать для этого какой то код. Но этот код совершенно не должен исполняться в главной программе при импорте модуля.
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
кстати, функция которая что то возвращает должна не принтовать значение, а возвращать, а принтовать стоит в той части кода, где вызывается.
return year

в main:
print(capital(x, p, y))

потому что сейчас return возвращает результат отработки print - None
олег, подскажите почему он обходит эту проверку на 0?
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
😍
олег, подскажите почему он обходит эту проверку на 0?
abc == 0 неверное условие
потому что   abc == [0,0,0]
если хочется отлавливать что одна из сторон  нулевая надо условие переписать проверяя элементы а не список
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
можно математически, перемножить все элементы и при нулевом сомножителе произведение нулевое
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
даже да так лучше сделать * 0
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
но разве он тут не переберет три значения и если найдет один 0 тогда пройдет условие? abc == 0 in abc
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
abc == 0 in abc это эквивалентно (abc == 0 ) in abc
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
or 0 in abc
источник