Streszczenie zagadnień: indeksowanie znaków, podstawy Unicode (chr/ord), walidacja e‑mail, usuwanie duplikatów słów oraz wyszukiwanie wzorca (algorytm naiwny).
str reprezentuje łańcuch znaków; każdy znak ma indeks: pierwszy 0, ostatni n-1.s[-1] – ostatni znak, s[-2] – przedostatni.len(s) zwraca długość napisu.ord('A') ⇒ 65, chr(65) ⇒ 'A' (konwersja znak ⇄ kod).Adres uznajemy za poprawny, jeśli spełnia m.in. warunki:
@ i nie znajduje się on na początku/końcu.@ jest co najmniej jedna kropka . – nie bezpośrednio po nim i nie na końcu.Czytamy kolejne słowa i budujemy listę wyniku tak, by nie dodawać słowa identycznego jak poprzednie. Typowe użycie: lista zakupów, gdzie dane mogą zawierać powtórzenia.
-1.Napisz program, który wczytuje jeden adres e‑mail i informuje, czy jest poprawny (wg zasad z punktu 2).
Program pobiera dwa adresy e‑mail. Jeśli są identyczne i oba poprawne – wypisz „Adres poprawny”. W przeciwnym razie wypisz odpowiedni komunikat błędu.
Wczytuj słowa (po jednym w linii) aż do napisu ***. Wypisz listę bez sąsiadujących powtórzeń w jednej linii, rozdzieloną spacją.
Wczytaj tekst wielkimi literami oraz wzorzec, a następnie zwróć pozycję pierwszego dopasowania (albo -1 jeśli go nie ma).
def poprawny_email(adres: str) -> bool:
# warunek 1: dokładnie jeden znak '@' i nie na brzegach
if adres.count('@') != 1:
return False
i = adres.index('@')
if i == 0 or i == len(adres) - 1:
return False
# warunek 2: jest kropka po '@' (nie tuż po nim i nie na końcu)
po = adres[i+1:]
if '.' not in po:
return False
if po[0] == '.' or po[-1] == '.':
return False
return True
if __name__ == '__main__':
a = input('Podaj adres e-mail: ').strip()
print('Poprawny' if poprawny_email(a) else 'Niepoprawny')
def poprawny_email(adres: str) -> bool:
if adres.count('@') != 1:
return False
i = adres.index('@')
if i == 0 or i == len(adres) - 1:
return False
po = adres[i+1:]
return ('.' in po) and (po[0] != '.') and (po[-1] != '.')
a1 = input('Podaj e-mail: ').strip()
a2 = input('Powtórz e-mail: ').strip()
if a1 != a2:
print('Podane adresy e-mail są różne!')
else:
print('Adres poprawny' if poprawny_email(a1) else 'Adres ma złą strukturę')
WYNIK = []
poprzedni = None
while True:
w = input().strip()
if w == '***':
break
if w != poprzedni:
WYNIK.append(w)
poprzedni = w
print(' '.join(WYNIK))
def znajdz_wzorzec(tekst: str, wzorzec: str) -> int:
n, m = len(tekst), len(wzorzec)
for start in range(0, n - m + 1):
j = 0
while j < m and tekst[start + j] == wzorzec[j]:
j += 1
if j == m:
return start
return -1
if __name__ == '__main__':
tekst = input('Tekst (WIELKIMI literami): ').strip()
wzorzec = input('Wzorzec: ').strip()
print('Pozycja:', znajdz_wzorzec(tekst, wzorzec))
Do konwersji między znakami a kodami użyj: ord(znak) → liczba, chr(liczba) → znak. Możesz wypisać zakres znaków, iterując po kodach i konwertując je funkcją chr.