Update files and add examples
This commit is contained in:
parent
9e55fb338d
commit
19d1089d13
@ -31,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 1,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -52,7 +52,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 5,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -75,7 +75,7 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"### Zadanie 3\n",
|
"### Zadanie 3\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Napisz funkcję, która wstawia polskie tłumaczenia wyrazów w danym tekście dla podanego słownika.\n",
|
"Napisz funkcję, która wstawia polskie tłumaczenia wyrazów w danym tekście dla podanego słownika (uwaga! proszę zachować pierwotną interpunkcję w tekście).\n",
|
||||||
"Czyli np. dla słownika:\n",
|
"Czyli np. dla słownika:\n",
|
||||||
"* dogs -> psy\n",
|
"* dogs -> psy\n",
|
||||||
"* cats -> koty\n",
|
"* cats -> koty\n",
|
||||||
|
@ -79,19 +79,19 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"print(\"NAMES\")\n",
|
"print(\"NAMES\")\n",
|
||||||
"for name in names:\n",
|
"for name in names:\n",
|
||||||
" print(validate_name(name))\n",
|
" print(f\"{name}: {validate_name(name)}\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"print(\"PHONE NUMBERS\")\n",
|
"print(\"PHONE NUMBERS\")\n",
|
||||||
"for phone_number in phone_numbers:\n",
|
"for phone_number in phone_numbers:\n",
|
||||||
" print(validate_phone_number(phone_number))\n",
|
" print(f\"{phone_number}: {validate_phone_number(phone_number)}\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"print(\"ZIP CODES\")\n",
|
"print(\"ZIP CODES\")\n",
|
||||||
"for code in zip_codes:\n",
|
"for code in zip_codes:\n",
|
||||||
" print(validate_zip_code(code))\n",
|
" print(f\"{code}: {validate_zip_code(code)}\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"print(\"EMAILS\")\n",
|
"print(\"EMAILS\")\n",
|
||||||
"for email in emails:\n",
|
"for email in emails:\n",
|
||||||
" print(validate_email(email))"
|
" print(f\"{email}: {validate_email(email)}\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -99,7 +99,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"### Zadanie 2\n",
|
"### Zadanie 2\n",
|
||||||
"Napisz funkcję, która podzieli tekst na zdania. Zdanie kończy się kropką, znakiem zapytania lub wykrzyknikiem. Wykorzystaj pojedynczy pattern z wyrażeń regularnych. "
|
"Napisz funkcję, która podzieli tekst na zdania. Zdanie kończy się kropką, znakiem zapytania lub wykrzyknikiem. Podzielone zdania muszą zachować pierwotną interpunkcję (czyli po podziale kropka/wykrzyknik/znak zapytania muszą występować w rozdzielonych od siebie zdaniach). Wykorzystaj pojedynczy pattern z wyrażeń regularnych. "
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -137,7 +137,7 @@
|
|||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python 3",
|
"display_name": "base",
|
||||||
"language": "python",
|
"language": "python",
|
||||||
"name": "python3"
|
"name": "python3"
|
||||||
},
|
},
|
||||||
|
235
examples.ipynb
Normal file
235
examples.ipynb
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"#### nie robimy 2 nowych linii w bloku funkcji. sentences[::2] oraz sentences[1::2] powinny być przypisane do osobnych zmiennych"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Pies ten pochodzi z południowych Chin, z terenów prowincji Guangdong! \n",
|
||||||
|
"Został rozpropagowany i hodowany w celach wystawowych przez hodowców w USA. \n",
|
||||||
|
"Nazwa psa, pochodząca z chińskiego, oznacza dosłownie piaszczysta skóra. \n",
|
||||||
|
"['Pies ten pochodzi z południowych Chin, z terenów prowincji Guangdong! ', 'Został rozpropagowany i hodowany w celach wystawowych przez hodowców w USA. ', 'Nazwa psa, pochodząca z chińskiego, oznacza dosłownie piaszczysta skóra. ']\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import re\n",
|
||||||
|
"tekst = \"Pies ten pochodzi z południowych Chin, z terenów prowincji Guangdong! Został rozpropagowany i hodowany w celach wystawowych przez hodowców w USA. Nazwa psa, pochodząca z chińskiego, oznacza dosłownie piaszczysta skóra. Chart polski polska rasa psa myśliwskiego, znana prawdopodobnie od czasów Galla Anonima, zaliczana do grupy chartów.\"\n",
|
||||||
|
"def split_sentences(text):\n",
|
||||||
|
" sentences = re.split(r'([.!?]\\s+)(?=[A-Z])', text)\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" full_sentences = [''.join(pair) for pair in zip(sentences[::2], sentences[1::2])]\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" for sentence in full_sentences:\n",
|
||||||
|
" print(sentence)\n",
|
||||||
|
" print(full_sentences)\n",
|
||||||
|
"split_sentences(tekst)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"#### Niewłaściwa nazwa funkcji switch_letter (robi coś innego, niż nazwa na to wskazuje). Linijka z sum jest nieczytelna."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"--- faja.\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"text = \"kurde faja.\"\n",
|
||||||
|
"\n",
|
||||||
|
"vulgar_words_base = [\"kurd\", \"choler\"]\n",
|
||||||
|
"\n",
|
||||||
|
"def switch_letter(word, vulgar_word_list):\n",
|
||||||
|
" word = word.lower()\n",
|
||||||
|
" for bad_word in vulgar_word_list:\n",
|
||||||
|
" switched_letters = sum(1 for a, b in zip(word, bad_word) if a != b)\n",
|
||||||
|
" if switched_letters == 1:\n",
|
||||||
|
" return True\n",
|
||||||
|
" return False\n",
|
||||||
|
"\n",
|
||||||
|
"def censor_text(text):\n",
|
||||||
|
" pattern = re.compile(r'[^\\s]*(' + '|'.join([f'{word}' for word in vulgar_words_base]) + r')[^\\s]*', re.IGNORECASE)\n",
|
||||||
|
" censored_text = pattern.sub(\"---\", text)\n",
|
||||||
|
"\n",
|
||||||
|
" censored_text_list = censored_text.split()\n",
|
||||||
|
" \n",
|
||||||
|
" for i, word in enumerate(censored_text_list):\n",
|
||||||
|
" if switch_letter(word, vulgar_words_base):\n",
|
||||||
|
" censored_text_list[i] = \"---\"\n",
|
||||||
|
" final_censored_text = \" \".join(censored_text_list)\n",
|
||||||
|
"\n",
|
||||||
|
" return final_censored_text\n",
|
||||||
|
"\n",
|
||||||
|
"print(censor_text(text))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"False"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"switch_letter(\"kurcze\", [\"kurzce\"])"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"#### Jeżeli nie ma takiej konieczności nie iterujemy po rozdzielonym na słowa tekście, tylko na całym tekście."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Siała baba mak.\n",
|
||||||
|
"Czy wiedziała jak?\n",
|
||||||
|
"Dziadek wiedział, nie powiedział, a to było tak!\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# Solution 2\n",
|
||||||
|
"text = 'Siała baba mak. Czy wiedziała jak? Dziadek wiedział, nie powiedział, a to było tak!'\n",
|
||||||
|
"sentences = []\n",
|
||||||
|
"\n",
|
||||||
|
"def split_sentences(text):\n",
|
||||||
|
" sentence = ''\n",
|
||||||
|
" for word in text.split():\n",
|
||||||
|
" x = re.search(r'[a-zA-Z0-9]+[.?!]', word)\n",
|
||||||
|
" if x is None:\n",
|
||||||
|
" sentence += f'{word} '\n",
|
||||||
|
" else:\n",
|
||||||
|
" sentence += word\n",
|
||||||
|
" sentences.append(sentence)\n",
|
||||||
|
" sentence = ''\n",
|
||||||
|
" for result in sentences:\n",
|
||||||
|
" print(result)\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"split_sentences(text)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"#### Nie stosujemy zapisu if {zmienna}, tylko if {zmienna} is True/False. Kod dla danego warunku przenosimy do nowej linii"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import re\n",
|
||||||
|
"\n",
|
||||||
|
"def validate_name(name):\n",
|
||||||
|
" valid = re.match(r'^[A-Z][a-z]{1,}',name)\n",
|
||||||
|
" if valid: return True\n",
|
||||||
|
" else: return False\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"#### Przykład właściwego zastosowania komentarza"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def censor_text(text):\n",
|
||||||
|
" prefixes = r'(do|na|o|od|pod|po|prze|przy|roz|s|u|w|y|za|z|u)*'\n",
|
||||||
|
"\n",
|
||||||
|
" # profanities according to prof. Jerzy Bralczyk\n",
|
||||||
|
" profanities = [ \n",
|
||||||
|
" rf'\\b{prefixes}(kurw[aąeęyi]\\w*)|(ku(z|ź)w\\w*)|(kurew\\w*)\\b',\n",
|
||||||
|
" rf'\\b{prefixes}(pierd\\w*)\\b',\n",
|
||||||
|
" rf'\\b{prefixes}(chuj\\w*)\\b',\n",
|
||||||
|
" rf'\\b{prefixes}(pizd\\w*)\\b',\n",
|
||||||
|
" rf'\\b{prefixes}(jeb\\w*)\\b',\n",
|
||||||
|
" ]\n",
|
||||||
|
"\n",
|
||||||
|
" profanity_pattern = re.compile('|'.join(profanities), re.IGNORECASE)\n",
|
||||||
|
"\n",
|
||||||
|
" return profanity_pattern.sub('---', text)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "base",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.11.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
@ -37,7 +37,7 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"## Laboratorium \n",
|
"## Laboratorium \n",
|
||||||
"\n",
|
"\n",
|
||||||
"Podstawą do zaliczenia laboratorium jest uzyskanie odpowiedniej liczby punktów. Liczba punktów i stworzenie projektu są jedynymi kryteriami oceny końcowej. \n",
|
"Podstawą do zaliczenia laboratorium jest uzyskanie odpowiedniej liczby punktów oraz stworzenie i zaprezentowanie projektu. Liczba punktów i stworzenie projektu (wraz z jego zaprezentowaniem) są jedynymi kryteriami oceny końcowej. \n",
|
||||||
"\n",
|
"\n",
|
||||||
"Punkty otrzymuje się za rozwiązanie zadań podanych przez prowadzącego oraz projekt końcowy. \n",
|
"Punkty otrzymuje się za rozwiązanie zadań podanych przez prowadzącego oraz projekt końcowy. \n",
|
||||||
"\n",
|
"\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user