# etap 1: w pętli prosimy użytkownika o wpisywanie kolejnych słów
# i dodajemy te słowa do listy tak długo, aż użytkownik wpisze pusty napis
lista = []
while True:
    slowo = input('Podaj kolejne słowo: ')
    if not slowo: break
    lista.append(slowo)
    print(lista)

print('Zebrane dane:', lista)

# etap 2: sortowanie listy
# funkcja sorted(zrodlo_danych) w wyniku zwraca nową listę z posortowanymi elementami
# a nie modyfikuje podanego źródła danych (źródłem może być lista, ale także dowolna inna rzecz "iterowalna")

# metoda .sort() , którą można wywołać na obieckie listy, zmienia kolejność wewnątrz listy
# sortowanie napisów domyślnie jest oparte o kody Unicode,
# z tego wynika, że "polskie litery" są umieszczone za literami łacińskimi, np. Ł jest za Z
lista.sort()
print('Posortowane 1:', lista)

# Aby posortować w oparciu o alfabet danego języka, trzeba wykonać dwa kroki
# 1) ustawić język porównywania tekstów w ustawieniach regionalnych
import locale
print('Lokale przed ustawieniem:', locale.getlocale(locale.LC_COLLATE))
locale.setlocale(locale.LC_COLLATE, 'pl_PL.utf8')
# to by oznaczało: użyj ustawień systemowych
# locale.setlocale(locale.LC_COLLATE, '')
print('Lokale po ustawieniu:', locale.getlocale(locale.LC_COLLATE))

# 2) Do operacji sortującej jako parametr key należy przekazać specjalną funkcję strxfrm
lista.sort(key=locale.strxfrm)
# print('Wyniki strxfrm:', [locale.strxfrm(s) for s in lista])
print('Posortowane 2:', lista)

# etap 3: w pętli użytkownik podaje numer pozycji, a program odczytuje element list
# z podanej pozycji lub informuje, że wyszliśmy poza zakres
# zróbmy tak, że sprawdzimy, czy użytkownik wpisal liczbę,
# a jeśli zamiast liczby wpisał 'koniec', to przerywamy program

while True:
    s = input('Podaj nr pozycji: ')
    if s.lower() == 'koniec' or not s:
        break
    try:
        i = int(s)
        print(f'Na pozycji {i} znajduje się {lista[i]}')
    except IndexError:
        print('Pozycja poza zakresem')
    except ValueError:
        print('Niepoprawna liczba')

print('Koniec programu')
