# 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()` .

```python
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.

```python
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](https://stackoverflow.com/questions/3257919/what-is-the-difference-between-is-none-and-none).

## **Cały program:**

```python
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`

%[https://replit.com/@Onix95/41-1#4/4_1.py] 

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