Konwersja typu z str na int, ValueError: invalid literal for int() with base 10

0

Witam serdecznie wszystkich forumowiczów.
Proszę o drobną pomoc (podpowiedź), a mianowicie jak przekonwertować tę linię kodu points = next_line(the_file) ze str na int?

próbowała następujących prób konwertowania ze zmiennej tekstowej na zmienną liczbową .
następujące sposoby jakich użyłem to :

Pierwszy sposób jakiego użyłem ,to
points = ' '
points_int = int(points)

Jednak otrzymałem następujący błąd
zrzut ekranu w załączniku proszę o pomoc !turniej_wiedzy2.py - Visual Studio Code 09.02.2022 20_56_29.png

import sys
points =''
points_int = int(points)






def open_file(file_name, mode):
    """Otwórz plik."""
    try:
        the_file = open(file_name, mode)
    except IOError as e:
        print("Nie można otworzyć pliku", file_name, "Program zostanie zakończony.\n", e)
        input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

        sys.exit()

    
    else:
        return the_file

def next_line(the_file):
    """Zwróć kolejny wiersz pliku kwiz po sformatowaniu go."""
    line = the_file.readline()
    line = line.replace("/", "\n")
    return line

def punkty(the_file):
   
    points = next_line(the_file)
   
    return the_file

def next_block(the_file):
    """Zwróć kolejny blok danych z pliku kwiz."""
    category = next_line(the_file)
    
    question = next_line(the_file)
    


    answers = []
    for i in range(4):
        answers.append(next_line(the_file))
        
    correct = next_line(the_file)
    if correct:

        correct = correct[0]
        
    explanation = next_line(the_file) 

    return category, question, answers, correct, explanation, points

def welcome(title):
    """Przywitaj gracza i pobierz jego nazwę."""
    print("\t\t Witaj w turnieju wiedzy!\n")
    print("\t\t", title, "\n")
 
def main():
    trivia_file = open_file("kwiz.txt", "r")
    title = next_line(trivia_file)
    welcome(title)
    score = 0

    # pobierz pierwszy blok
    category, question, answers, correct, points, explanation = next_block(trivia_file)
    while category:
        # zadaj pytanie
        print(category)
        print(question)
        for i in range(4):
            print("\t", i + 1, "-", answers[i])

        # uzyskaj odpowiedź
        answer = input("Jaka jest Twoja odpowiedź?: ")

        # sprawdź odpowiedź
        if answer == correct:

            print("\nOdpowiedź prawidłowa!", end=" ")
            score + points
            print("Wynik:", points, "\n\n")
            

      
            
        elif answer !=correct:
            
            print("\nOdpowiedź niepoprawna.", end=" ")
            print(explanation)
            print("Wynik:", 0, "\n\n")
            

     

        # pobierz kolejny blok
        category, question, answers, correct, points, explanation = next_block(trivia_file)

    trivia_file.close()
    print("To było ostatnie pytanie!")
    print("Twój końcowy wynik wynosi", score + points_int)

    
main()  
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

5
points = ''
points_int = int(points)

Nie dziwne, próbujesz zrzucić do integera, "empty string", i dostajesz ValueError, dość czytelny; string musi być możliwy do konwersji, np., 1, 3, 42.

0

@lion137: Tak się właśnie domyślałem dokładnie chodzi mi o przekonwertowanie tej linijki kodu na int points = next_line(the_file) , która ma czytać z pliku tekstowego i konwertować go (1 jego linie) na int

1

OK, to czemu to umieściłeś pod importami? Widzę tu jakąś małą tragedię:)
Domyślasz się też, że miałbym parę uwag do tego kodu:)
Otwieranie pliku, użyj, context managera, w tej funkcji można też oczyścić wejście, i zwrócić listę stringów, (hint: readlines) wtedy, next_line nie będzie potrzebna.
Co do, next_line, line = line.replace("/", "\n") - słabo, jest coś takiego, jak, strip.
Funkcja, punkty, WTF? Pobierasz, the_file, i je zwracasz.

0
lion137 napisał(a):

OK, to czemu to umieściłeś pod importami? Widzę tu jakąś małą tragedię:)
Domyślasz się też, że miałbym parę uwag do tego kodu:)
Otwieranie pliku, użyj, context managera, w tej funkcji można też oczyścić wejście, i zwrócić listę stringów, (hint: readlines) wtedy, next_line nie będzie potrzebna.
Co do, next_line, line = line.replace("/", "\n") - słabo, jest coś takiego, jak, strip.
Funkcja, punkty, WTF? Pobierasz, the_file, i je zwracasz.

Dzięki z podpowiedź i naświetlenie trochę nieco lepszych konceptów jest , to dla mnie bardzo cenne i zgłębię wiedzę na ten temat . Tu jest taka kwestia , że pracuję (uczę się ) na podstawie podręcznika Python dla każdego wydanie 3 doskonała i oczywiście ta książka doskonała nie jest , co sam jak osoba początkująca zauważyłem . Ogólnie sprawa wygląda w następujący sposób mam dorobić funkcjonalność "przerobić" kod gry , który ma za zadanie sumować punkty z wszystkich poprawnych odpowiedzi uzyskanych od użytkownika ale nie bardzo wiem jak , to ugryźć próbowałem przechwytywać już poprawne odpowiedzi do list oraz krotek tylko cały czas ma z tym jeden problem , co bym nie zrobił , to dostaje komunikat , że nie mogę dodać str i int

0

@lion137: Dzięki z podpowiedź i naświetlenie trochę nieco lepszych konceptów jest , to dla mnie bardzo cenne i zgłębię wiedzę na ten temat . Tu jest taka kwestia , że pracuję (uczę się ) na podstawie podręcznika Python dla każdego wydanie 3 doskonała i oczywiście ta książka doskonała nie jest , co sam jak osoba początkująca zauważyłem . Ogólnie sprawa wygląda w następujący sposób mam dorobić funkcjonalność "przerobić" kod gry , który ma za zadanie sumować punkty z wszystkich poprawnych odpowiedzi uzyskanych od użytkownika ale nie bardzo wiem jak , to ugryźć próbowałem przechwytywać już poprawne odpowiedzi do list oraz krotek tylko cały czas ma z tym jeden problem , co bym nie zrobił , to dostaje komunikat , że nie mogę dodać str i int

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