Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2016 12:25:38

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

Доброе время суток

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

Сама задача:



Код решения:

r = int(input())
n = 0 #переменная показывающая последнюю цифру +1
q = 0 #переменная задающая последнюю цифру
s=''
if r == 1:
    print(1)
else:
    while r > len(s)-1*r:
        while q >= n:
            s+= (str(n)+' ')*n
            n+=1
        q += 1
u=s[0:r+r*1]
for i in u:
    print(i,end='', sep = '' )

Отредактировано sl0w (Май 13, 2016 12:26:15)

Офлайн

#2 Май 13, 2016 13:18:35

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

Добрый день. Я бы воспользовался функцией range()
к примеру

def ol(number):
	string = ""
	count = 0
	for n in range(number):
		if n ==0:
			continue
		for i in range(n):
			string += (str(n)+" ")
			count +=1
			if count == number:
				string = string.rstrip(" ")
				return (string)
				break
    



lol developer

Офлайн

#3 Май 13, 2016 13:34:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Циклическая задача

Офлайн

#4 Май 13, 2016 13:47:26

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

большое спасибо , однако все же не понятно в чем у меня ошибка

либо это не у меня ошибка, а у программы верификации ответа ?

Отредактировано sl0w (Май 13, 2016 13:50:23)

Офлайн

#5 Май 13, 2016 14:42:52

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

А что именно Вас не устраивает в Вашей программе?



lol developer

Офлайн

#6 Май 13, 2016 15:33:44

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

исключительно то что она не проходит верификацию, а так - вроде работает как нужно, хоть и кривато написана

Офлайн

#7 Май 13, 2016 15:37:29

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

sl0w
исключительно то что она не проходит верификацию, а так - вроде работает как нужно, хоть и кривато написана
Ну это весьма спорный вопрос. Я не могу сказать почему Ваша программа не проходит где - то верификацию. Возможно есть условия, которые Вы упустили из виду. Почитайте темы, которые рекомендует py.user.next
py.user.next
Уже было
Уже было
Возможно там кроется ответ.



lol developer

Отредактировано Vlad_Ki (Май 13, 2016 15:37:40)

Офлайн

#8 Май 13, 2016 17:20:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Циклическая задача

Vlad_Ki
Не знаю, кто там и что верифицирует, но я бы автора вот такого решения побоялся бы допускать до настоящей задачи

	for n in range(number):
		if n == 0:
			continue



Офлайн

#9 Май 13, 2016 18:06:39

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

FishHook

Осознал. Учту.
Спасибо
Слава богу людей в космос я не запускаю!)
Пока еще



lol developer

Отредактировано Vlad_Ki (Май 13, 2016 18:12:30)

Офлайн

#10 Май 13, 2016 19:33:10

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Циклическая задача

Пока внимал замечание от FishHook
озарился

def op(r):
	n = 0 #переменная показывающая последнюю цифру +1
	q = 0 #переменная задающая последнюю цифру
	s=''
	while r > len(s)-r:
		while q >= n:
			s+= (str(n)+' ')*n
			n+=1
		q += 1
	u=s[0:r+r]
	return(u)

Отдельное условие для единицы было лишним тк и так все корректно работало, да и к тому же еще выводило пустую строку после строки с единицей тк у вас в коде еще есть
u=s[0:r+r*1]
for i in u:
    print(i,end='', sep = '' )

Потом зачем итерироваться по строке для того что бы вывести ее символы в таком же порядке в одну строку?
И умножение числа на единицу равно тому же самому числу. Так что
while r > len(s)-1*r:
=
while r > len(s)-r:
и
u=s[0:r+r*1]
=
u=s[0:r+r]




lol developer

Отредактировано Vlad_Ki (Май 13, 2016 19:42:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version