1

Тема: Задача з курсів.

Проходжу курси на одному з ресурсів. І запара з завданням.
Завадання викладаю в мові оригіналу так як вони часто "адекватно" написані.

Прихований текст

Напишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его соседей. Для элементов списка, являющихся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся список "1 3 5 6 10", то на выход ожидается список "13 6 9 15 7" (без кавычек).

Если на вход пришло только одно число, надо вывести его же.

Вывод должен содержать одну строку с числами нового списка, разделёнными пробелом.

Ось сам код програми , хоча на локальній машині все працює вірно . Онлайн тестер не приймайє . А конкретної відповіді не дає . Тому дамаю можливо я щось не так зрозумів.

Python 3
s = (input().split())
x = 0
y = 0
z = 0
if s[-1] == s[0]:
    print (s[0]) 
else:
    for i in s:
        k = s.index(i)
        if i == s[0]:
            x = int(s[-1])
        else:
            x = int(s[k-1])
        if i == s[-1]:
            y = int(s[0])
            z = x + y
            print (str(z), end='')
        else:
            y = int(s[k+1])
            z = x + y
            print (str(z), end=' ')

2

Re: Задача з курсів.

А що він виводить, якщо дати йому
1 1
Має ніби-то вивести
2 2
А ваш код виведе, якщо не помиляюся,
1

Подякували: Blast1

3 Востаннє редагувалося Blast (22.11.2014 17:38:27)

Re: Задача з курсів.

koala написав:

А що він виводить, якщо дати йому
1 1
Має ніби-то вивести
2 2
А ваш код виведе, якщо не помиляюся,
1

Наче виправив , але всеодно не проходить.

Прихований текст
s = (input().split())
x = 0
y = 0
z = 0
le = len(s)
if le ==1:
    print (s[0]) 
else:
    for i in s:
        k = s.index(i)
        if i == s[0]:
            x = int(s[-1])
        else:
            x = int(s[k-1])
        if i == s[-1]:
            y = int(s[0])
            z = x + y
            print (str(z),end=' ')
        else:
            y = int(s[k+1])
            z = x + y
            print (str(z),end=' ')

4

Re: Задача з курсів.

Если на вход пришло только одно число, надо вывести его же.

Ось це як зрозуміти ?Декілька раз введене одне і теж число ? чи просто число введене один раз      ?

5 Востаннє редагувалося koala (22.11.2014 18:33:02)

Re: Задача з курсів.

Саме так, як ви і зрозуміли: якщо введене ТІЛЬКИ ОДНЕ ЧИСЛО. 2 2 - це два числа, які дорівнюють одне одному.
Давайте дивитися далі:

for i in s: //i приймає значення елементів масиву
k = s.index(i) //k дорівнює індексу першого з елементів масиву зі значенням i... wait... oh shi...

6

Re: Задача з курсів.

не викор. "index()" і "print ... end=' ' "  також думаю лишній пробіл вставляє )


думаю якось так:

s = (input().split())
ns = []

length = len(s)

if length == 1:
    print s[0]

else:
    for i, l in enumerate(s):
        if i == length-1:
            right = s[0]
        else:
            right = s[i+1]
   
        if i == 0   :
            left = s[-1]
        else:
            left = s[i-1]

        ns.append(str(int(left) + int(right)))

    print(' '.join(ns))

тільки з виводом поексперементуйте (чи срічку воно хоче чи інт)

Подякували: Blast1