Skip to main content

Command Palette

Search for a command to run...

Matura informatyka 2022 maj (poziom rozszerzony) - zadanie 4.1

Updated
2 min read
Matura informatyka 2022 maj (poziom rozszerzony) - zadanie 4.1

Treść zadania:

Podaj, ile jest w pliku liczby.txt takich liczb, których cyfry pierwsza i ostatnia są takie same.

Zapisz tę z nich, która występuje w pliku liczby.txt jako pierwsza.

W pliku z danymi jest co najmniej jedna taka liczba.

Odpowiedź dla danych z pliku przyklad.txt: 26 626

(26 takich liczb, które mają pierwszą i ostatnią cyfrę taką samą; pierwszą z nich w pliku przykładowym jest 626)

Rozwiązanie:

Odczytujemy dane z pliku - tym razem nie konwertujemy ich na int , ponieważ będziemy sprawdzać pierwszy i ostatni znak cyfry. Warto pamiętać o usunięciu białych znaków przy pomocy metody strip() .

with open("dane/liczby.txt", "r") as f:
    nums = [num.strip() for num in f.readlines()]

total = 0
first_num = None

Następnie w prostej pętli sprawdzamy, czy pierwszy znak równa się ostatniemu. Jeśli tak - zwiększamy licznik. Gdy first_num jest None , możemy uznać, że spotkaliśmy pierwszą taką liczbę w pliku - zapisujemy ją do zmiennej.

for str_num in nums:
    if str_num[0] == str_num[-1]:
        total += 1
        if first_num is None:
            first_num = str_num

print(f"{total} {first_num}")

Dlaczego użyłem is zamiast == ? Można poczytać o tym np.: tutaj.

Cały program:

with open("dane/liczby.txt", "r") as f:
    nums = [num.strip() for num in f.readlines()]

total = 0
first_num = None

for str_num in nums:
    if str_num[0] == str_num[-1]:
        total += 1
        if first_num is None:
            first_num = str_num

print(f"{total} {first_num}")

Wynik:

18 93639

Źródło: https://arkusze.pl/matura-informatyka-2022-maj-poziom-rozszerzony/

More from this blog

matura z infy

17 posts

Matura informatyka 2022 maj (poziom rozszerzony)