python funkcja pobierajaca liste

0

Jak napisać funkcję, która wczyta jako argument listę i na wyjściu poda wynik w postaci sumy częściowej? np. gdy wpiszemy 1,2,3 to ma wyświetlić w wyniku 1,3,6.

0
# -*- coding: utf-8 -*-
import sys


def dodawaj(lista):
	wynik = 0
	for liczba in lista:
		wynik += liczba
		sys.stdout.write(str(wynik) + " ")
	return
	
dodawaj([1, 2, 3])
 
0

a jak zrobić, żeby dodawało dowolną ilość liczb, zebym mógł wpisywać, np. po przecinku, ile chcę tych liczb?

0
olaa napisał(a):

a jak zrobić, żeby dodawało dowolną ilość liczb, zebym mógł wpisywać, np. po przecinku, ile chcę tych liczb?

Dodaje dowolną ilość liczb, lista to nie tablica z c i podobnych, nie ma z góry ustalonej ilości ustalonych elementów. ta linia for liczba in lista: za zmienną liczba będzie za każdym razem podstawiać kolejny element lista, aż dojdzie do jej końca. Tak więc wszystkie zostaną przerobione, niezależnie od tego ile ich wyślesz.

0

w takim razie co mam zmienić w tym dodawaj([1,2,3])?

0
olaa napisał(a):

w takim razie co mam zmienić w tym dodawaj([1,2,3])?

To akurat wywołanie funkcji z podanym przez ciebie przykładem, na czymś trzeba sprawdzić czy gdzieś literówki NIE MA

0

Wersja tego kodu bardziej pythonowa a nie niskopoziomowa (ale też wolniejsza!):

def dodaj(data):
    for end in range(1, len(data)+1):
        print(sum(data[:end]))
0
from itertools import accumulate


def partial_sums(xs):
    return list(accumulate(xs))

print(partial_sums([1, 2, 3]))
0
Shalom napisał(a):

Wersja tego kodu bardziej pythonowa a nie niskopoziomowa (ale też wolniejsza!):

def dodaj(data):
    for end in range(1, len(data)+1):
        print(sum(data[:end]))

Dziękuję wszystkim, natomiast ten program wygląda na najbliższy moim umiejętnościom, lecz jak mam zrobić, aby program po włączeniu prosił o podanie listy, z której będzie tworzył sumy częściowe?

0

Chcę, żeby** program pobrał listę **składającą się z dowolnych liczb. Pewnie coś z tym raw_input co mi podałeś, lecz nie wiem jak to użyć, żeby uzyskać to, co chcę.

0

Ech, żal.pl, samo zebranie o gotowce.

lista = map(int, raw_input("Podaj liczby ").split())

lub z list comprehension:

lista = [int(liczba) for liczba in raw_input("Podaj liczby ").split()]
0

a dlaczego wyskakuje mi, że raw_input nie jest zdefiniowane?

0

Bo nie raczyłaś napisać w JAKIM pythonie to piszesz. 2 czy 3. Poza tym jesteś po prostu lewniwa, bo rzut oka w dokumentacje powiedziałby ci jak w wersji 3 nazywa się ta funkcja.

0
olaa napisał(a):

a dlaczego wyskakuje mi, że raw_input nie jest zdefiniowane?

Mała podpowiedź: wersja Pythona. I to by było chyba na tyle jeśli o mnie chodzi w tym temacie.

0

mam jeszcze pytanie co do pierwszego podanego przez Was programu, co oznacza w nim składnia

 sys.stdout.write(str(wynik) + " ")

i czy można to zapisac jakoś inaczej(czyt. prościej) nie korzystając z tego sys ?

0

To po prostu szybsza wersja print-a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1