Problem z listą w pętli

0

Cześć,
Mam problem z listą(liczba[i]) w pętli. Wyskakuje mi błąd "IndexError: list index out of range". Pomożecie jakoś zmienić kod? Sory jak podałem za mało informacji lub coś źle zrobiłem mój pierwszy raz na tym forum.Chodzi mi dokładnie o "suma=liczba[i]+suma" w funkcji dodawanie().

def wybor():
    print("1.dodawanie")
    print("2.odejmowanie")
    print("3.dzielenie")
    print("4.mnożenie")
    global option
    option = int(input("Wybierz jedną z poadnych opcji(1-4): "))

def zilu():
    global ile
    ile = int(input("Z ilu liczba robisz działanie: "))
    print(ile, type(ile))

def wpisywanie():
    i = 0
    global liczba
    liczba = []
    while i < ile:
        co = int(input("Podaj liczbe"))
        liczba.insert(i, co)
        i = i + 1
def dodawanie():
        i=0
        global suma
        liczba = []
        while i < ile:
            suma=liczba[i]+suma
            i = i + 1

wybor()
zilu()
wpisywanie()
print(liczba.count(2))
print(liczba[0:ile])
if(option==1):
    dodawanie()
1

W dodawanie() zamiast liczba = [] daj global liczba.
Naucz się przekazywać i zwracać wartości z funkcji tak aby nie używać global.

def dodawanie(liczba):
    ...
    return suma
2
def dodawanie():
        i=0 # Inicjalizujesz i jako 0
        global suma # Ściągasz skądś sumę, przez global, H wie skąd.
        liczba = [] #Inijcjalizujesz pustą listę
        while i < ile: # i jest przyrównywane do 'ile' które tu nie istnieje, bo nie jest przekazane ani wczytane z global
            suma=liczba[i]+suma #Odwołujesz się do indexu 0 (pierwszego elementu) pustej listy. A taki element nie istnieje, dlatego masz błąd.
            i = i + 1

Przykład minimalistyczny na temat pytania, co robisz źle:

L = [1, 2, 3]
print(L[0]) #1
print(L[1]) #2
print(L[2]) #3
print(L[3]) # Tu będzie twój error, nie ma tu liczby pod indexem 3.

Natomiast jest tu bardzo dużo innych błędów :). Zamiast je wymieniać to pokażę działający przykład jak mogłoby to wyglądać

Prosty przykład jak mogłoby to wyglądać:


def main():
    switch = {1: add} #~ Tu w przyszłości się doda kolejne funkcje
    print("""1.dodawanie
2.odejmowanie
3.dzielenie
4.mnożenie""")
    option = int(input("Wybierz jedną z poadnych opcji(1-4): "))
    selected_function = switch.get(option)
    if option in switch:
        how_many = int(input("Z ilu liczba robisz działanie: "))
        input_list = inserts(how_many)
        result = selected_function(input_list)
        print(result)

def inserts(how_many):
    input_list = []
    for _ in range(how_many):
        co = int(input("Podaj liczbe"))
        input_list.append(co)
    return into
        
def add(input_list):
    list_sum = 0
    for number in input_list:
        list_sum += number
    return list_sum

if __name__ == '__main__':
    main()

Można to jeszcze dużo bardziej uprościć, ale starałem się to zrobić względnie czytelnie dla kogoś kto zaczyna, abyś mógł to sobie przeanalizować i zrozumieć co się tu dzieje :)

0

Jak zaczynasz przygodę z Pythonem i chciałbyś po polsku i krok po kroku, to polecam Ci materiały z: https://github.com/pawtul/python_wshop
Fajnie po "chłopsku" wyjaśnione co oznacza np. takie

if __name__ == "__main__"

https://github.com/pawtul/python_wshop/blob/master/8.%20Modu%C5%82y.ipynb

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