Skip to content

Commit 106254d

Browse files
committed
Summary for week10
1 parent 576fef7 commit 106254d

File tree

2 files changed

+307
-0
lines changed

2 files changed

+307
-0
lines changed

week10/Summary.ipynb

Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,307 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"<img src=\"images/logo.png\" alt=\"לוגו של מיזם לימוד הפייתון. נחש מצויר בצבעי צהוב וכחול, הנע בין האותיות של שם הקורס: לומדים פייתון. הסלוגן המופיע מעל לשם הקורס הוא מיזם לימוד תכנות בחינם ובעברית.\">"
8+
]
9+
},
10+
{
11+
"cell_type": "markdown",
12+
"metadata": {},
13+
"source": [
14+
"# <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> תרגילים </span> "
15+
]
16+
},
17+
{
18+
"cell_type": "markdown",
19+
"metadata": {},
20+
"source": [
21+
"<p style=\"text-align: right; direction: rtl;\">\n",
22+
" כלים מומלצים:<br>\n",
23+
" <ul>\n",
24+
" <li><a href=\"https://regexr.com/\">RegExr</a></li>\n",
25+
" <li><a href=\"https://www.debuggex.com/\">Debuggex</a></li>\n",
26+
" <li><a href=\"https://regex101.com/\">regex101</a></li>\n",
27+
" </ul>\n",
28+
"</p>"
29+
]
30+
},
31+
{
32+
"cell_type": "markdown",
33+
"metadata": {},
34+
"source": [
35+
"## <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> שמות טלפונים וכתובות </span> "
36+
]
37+
},
38+
{
39+
"cell_type": "markdown",
40+
"metadata": {},
41+
"source": [
42+
"### <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> שמות </span> "
43+
]
44+
},
45+
{
46+
"cell_type": "markdown",
47+
"metadata": {},
48+
"source": [
49+
"<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
50+
" כתבו ביטוי רגולרי הבודק עבור מחרוזת שהתקבלה האם היא מתאימה לתבנית של שם פרטי ושם משפחה.<br>\n",
51+
" שמות נתאר בצורה הבאה:<br>\n",
52+
" שם פרטי באות גדולה ושם משפחה באות גדולה. השמות יכילו אותיות בלבד כאשר אות גדולה תופיע רק בתחילת השם בלבד (ולא בשאר השם).<br>\n",
53+
" לדוגמה:<br>\n",
54+
" <samp>Alice Bob</samp> הוא שם תקני.<br>\n",
55+
" לעומת זאת:<br>\n",
56+
" <samp>ALice bob</samp> או <samp>alice Bob</samp> אינם תקניים.\n",
57+
"\n",
58+
"</p>"
59+
]
60+
},
61+
{
62+
"cell_type": "code",
63+
"execution_count": null,
64+
"metadata": {},
65+
"outputs": [],
66+
"source": []
67+
},
68+
{
69+
"cell_type": "markdown",
70+
"metadata": {},
71+
"source": [
72+
"### <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> טלפונים </span> "
73+
]
74+
},
75+
{
76+
"cell_type": "markdown",
77+
"metadata": {},
78+
"source": [
79+
"<p style=\"text-align: right; direction: rtl; clear: both;\">\n",
80+
" כתבו ביטוי רגולרי הבודק עבור מחרוזת שהתקבלה האם היא מתאימה לתבנית של טלפונים, נתמוך ב-2 סוגים של טלפונים:<br>\n",
81+
" X מציין ספרה.<br>\n",
82+
" <ul style=\"text-align: right; direction: rtl;\">\n",
83+
" <li> טלפון ביתי בתצורה: 0X-XXXXXXX </li>\n",
84+
" <li> טלפון סלולרי: 05X-XXXXXXX </li>\n",
85+
" </ul>\n",
86+
"</p>\n",
87+
"<p style=\"text-align: right; direction: rtl; clear: both; float:right;\">\n",
88+
"לדוגמה:<br>\n",
89+
" <samp>04-1234567</samp> הוא מספר טלפון ביתי תקין.<br>\n",
90+
" <samp>054-1234567</samp> הוא מספר טלפון סלולרי תקין.<br>\n",
91+
" <samp>254-1234567</samp> הוא מספר טלפון סלולרי <strong>לא</strong> תקין.<br>\n",
92+
" <samp>1234567 254</samp> הוא מספר טלפון סלולרי <strong>לא</strong> תקין כי יש רווח והמספר מתחיל ב-2.<br>\n",
93+
" \n",
94+
"</p>"
95+
]
96+
},
97+
{
98+
"cell_type": "code",
99+
"execution_count": null,
100+
"metadata": {},
101+
"outputs": [],
102+
"source": []
103+
},
104+
{
105+
"cell_type": "markdown",
106+
"metadata": {},
107+
"source": [
108+
"### <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> כתובות </span> "
109+
]
110+
},
111+
{
112+
"cell_type": "markdown",
113+
"metadata": {},
114+
"source": [
115+
"<p style=\"text-align: right; direction: rtl; clear: both;\">\n",
116+
" כתבו ביטוי רגולרי הבודק עבור מחרוזת שהתקבלה האם היא מתאימה לתבנית של כתובות:<br>\n",
117+
"</p>\n",
118+
"<p style=\"text-align: right; direction: ltr;\">\n",
119+
" <samp>[Street Name] [Description] [Number], [Country] </samp><br>\n",
120+
" <ul style=\"text-align: right; direction: rtl;\">\n",
121+
" <li> <samp>[Street Name]</samp> הוא שם הרחוב המורכב ממילים (לפחות מילה אחת) המתחילות באות גדולה ושאר האותיות קטנות.</li>\n",
122+
" <li> <samp>[Description]</samp> הוא אחד מבין: St, Av, Rd, Dr (שהם Street, Avenue, Road, Drive).</li>\n",
123+
" <li> <samp>[Number]</samp> הוא מספר בן ספרה אחת עד שלוש ספרות.</li>\n",
124+
" <li> <samp>[Country]</samp> בדומה לשם הרחוב, שם המדינה מורכב ממילים (לפחות אחת) המתחילות באות גדולה ושאר האותיות קטנות. </li>\n",
125+
" </ul>\n",
126+
"</p>\n",
127+
"<p style=\"text-align: right; direction: rtl; clear: both; float:right;\">שימו-לב! הפסיק המופיע לאחר מספר הרחוב הוא חלק מהתבנית.<br>\n",
128+
" לדוגמה:<br>\n",
129+
" <samp>Aliahu Hanavie St 12, Nicargua</samp> היא כתובת תקינה.<br>\n",
130+
" <samp>ALiahu Hanavie TG 1222, nicargua</samp> היא כתובת לא תקינה.<br>\n",
131+
"</p>\n",
132+
" \n",
133+
" \n",
134+
"</p>"
135+
]
136+
},
137+
{
138+
"cell_type": "code",
139+
"execution_count": null,
140+
"metadata": {},
141+
"outputs": [],
142+
"source": []
143+
},
144+
{
145+
"cell_type": "markdown",
146+
"metadata": {},
147+
"source": [
148+
"## <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> נתיבים במחשב </span> "
149+
]
150+
},
151+
{
152+
"cell_type": "markdown",
153+
"metadata": {},
154+
"source": [
155+
"<p style=\"text-align: right; direction: rtl;\">\n",
156+
" בתרגיל זה נכתוב ביטוי רגולרי שמוצא התאמה עבור נתיבים של קבצים במחשב.<br>\n",
157+
" לשם הפשטות נעסוק בנתיבים במערכות הפעלה מבוססות Linux ובנתיבים ללא רווחים.<br>\n",
158+
" כל הנתיבים יתחילו ב-<samp>'/'</samp> ולאחר מכן שמות התיקיות אליהם הנתיב מוביל, מופרדות ב-<samp>'/'</samp>. לבסוף יופיע שם הקובץ, לאחריו נקודה וסיומת המייצגת את סוג הקובץ.<br>\n",
159+
" לדוגמה:<br>\n",
160+
"</p>\n",
161+
"<p style=\"text-align: right; direction: ltr;\">\n",
162+
" <samp>/home/i_am/folders/in_the/path/of/filesystem/i_am_file.txt</samp>\n",
163+
"</p>\n",
164+
"<p style=\"text-align: right; direction: rtl;\">\n",
165+
"כתבו ביטוי רגולרי המוצא נתיבים מהסוג שתואר. החזירו את שמות התיקיות בנתיב, את שם הקובץ ואת סוגו בשלוש קבוצות.<br>\n",
166+
" לדוגמה:\n",
167+
"</p>\n",
168+
"<p style=\"text-align: left; direction: ltr;\">\n",
169+
" <samp>/home/is/deep/in/the/filesystem/myfile.txt</samp>\n",
170+
"</p>\n",
171+
"<p style=\"text-align: right; direction: rtl;\">\n",
172+
"הוא ביטוי תקין ובו שמות התיקיות הן <samp>home, is, deep, in, the, filesystem</samp> שם הקובץ הוא: <samp>myfile</samp> והסיומת היא <samp>txt</samp> \n",
173+
"</p>\n",
174+
"<p style=\"text-align: left; direction: ltr;\">\n",
175+
" <samp>C://ho me/is/deep/in/the/filesystem/myfile.txt</samp>\n",
176+
"</p>\n",
177+
"<p style=\"text-align: right; direction: rtl;\">\n",
178+
" הוא לא שם תקין כי אינו מתחיל ב-<samp>'/'</samp> ומכיל רווח בתיקייה הראשונה. \n",
179+
"</p>"
180+
]
181+
},
182+
{
183+
"cell_type": "code",
184+
"execution_count": null,
185+
"metadata": {},
186+
"outputs": [],
187+
"source": []
188+
},
189+
{
190+
"cell_type": "markdown",
191+
"metadata": {},
192+
"source": [
193+
"## <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> סיסמאות </span> "
194+
]
195+
},
196+
{
197+
"cell_type": "markdown",
198+
"metadata": {},
199+
"source": [
200+
"<p style=\"text-align: right; direction: rtl;\">\n",
201+
" כתבו ביטוי רגולרי הבודק עבור מחרוזת שהתקבלה האם היא מתאימה לתבנית של סיסמה.<br>\n",
202+
" סיסמה נתאר בצורה הבאה:<br>\n",
203+
" <ul style=\"text-align: right; direction: rtl;\">\n",
204+
" <li> לפחות 8 תווים.</li>\n",
205+
" <li> לא מכיל רווחים.</li>\n",
206+
" <li> מכיל לפחות שתי ספרות.</li>\n",
207+
" <li> מכיל לפחות שתי אותיות גדולות ושתי אותיות קטנות.</li>\n",
208+
" <li> מכיל לפחות תו אחד מיוחד שאינו ספרה או אות (וגם לא רווח).</li>\n",
209+
" </ul> \n",
210+
"</p>\n",
211+
"<p style=\"text-align: right; direction: rtl;\">\n",
212+
"לדוגמה:<br>\n",
213+
" <samp>IAmstrong!P@55w0rd</samp> היא סיסמה תקינה.<br>\n",
214+
" לעומת זאת,<br>\n",
215+
" <samp>iampassw0rD</samp> היא סיסמה לא תקינה כי אינה מכילה מספיק ספרות ואותיות גדולות ואין בה אף תו מיוחד.<br>\n",
216+
"</p>"
217+
]
218+
},
219+
{
220+
"cell_type": "code",
221+
"execution_count": null,
222+
"metadata": {},
223+
"outputs": [],
224+
"source": []
225+
},
226+
{
227+
"cell_type": "markdown",
228+
"metadata": {},
229+
"source": [
230+
"## <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> אתרי אינטרנט </span> "
231+
]
232+
},
233+
{
234+
"cell_type": "markdown",
235+
"metadata": {},
236+
"source": [
237+
"<p style=\"text-align: right; direction: rtl;\">\n",
238+
" כתבו ביטוי רגולרי הבודק עבור מחרוזת שהתקבלה האם היא מתאימה לתבנית של אתר אינטרנט.<br>\n",
239+
" אתר אינטרנט נתאר בצורה הבאה:<br>\n",
240+
"</p>\n",
241+
"<p style=\"text-align: right; direction: rtl;\"> \n",
242+
" <ul style=\"text-align: right; direction: rtl;\">\n",
243+
" <li>מתחיל ב-www.</li>\n",
244+
" <li>מכיל מילים המתארות את שם האתר המורבות מאותיות גדולות, קטנות ומקפים. המילים מופרדות בנקודה.</li>\n",
245+
" <li>הכתובת מסתיימת ב-<samp dir=\"ltr\">.com</samp> או <samp dir=\"ltr\">.co.[COUNTRY_CODE]</samp> כאשר [COUNTRY_CODE] הוא 2 אותיות אנגליות קטנות המציינות את המדינה אליה האתר שייך.\n",
246+
" </ul> \n",
247+
"</p>\n",
248+
"<p style=\"text-align: right; direction: rtl;\">\n",
249+
"לדוגמה:<br>\n",
250+
" <samp dir=\"ltr\">www.i-am-a-website.co.uk</samp> היא כתובת אתר אינטרנט תקינה.<br>\n",
251+
" לעומת זאת:<br>\n",
252+
" <samp dir=\"ltr\">ww.ia5.am.not_a.webSite.</samp> היא כתובת לא תקינה כי היא מכילה ספרה, קו תחתון, אינה מתחילה ב-www ולא מסתיימת בסיומת <samp dir=\"ltr\">.com</samp> או <samp dir=\"ltr\">.co.[COUNTRY_CODE]</samp><br><br>\n",
253+
" על הביטוי הרגולרי שתכתבו להחזיר את הקבוצות עבור שם האתר (שאלו כל המילים המופרדות בנקודה שאינן התחילית ואינן הסיומת) ועבור קוד המדינה (אם קיים).\n",
254+
"</p>"
255+
]
256+
},
257+
{
258+
"cell_type": "code",
259+
"execution_count": null,
260+
"metadata": {},
261+
"outputs": [],
262+
"source": []
263+
},
264+
{
265+
"cell_type": "markdown",
266+
"metadata": {},
267+
"source": [
268+
"## <span style=\"text-align: right; direction: rtl; float: right; clear: both;\"> עוד מלא תרגילים </span>"
269+
]
270+
},
271+
{
272+
"cell_type": "markdown",
273+
"metadata": {},
274+
"source": [
275+
"<p style=\"text-align: right; direction: rtl;\">\n",
276+
" קיימים במלא אתרים כגון:<br>\n",
277+
" <ul>\n",
278+
" <li><a href=\"http://play.inginf.units.it/#/\">RegexPlay</a></li>\n",
279+
" <li><a href=\"https://alf.nu/RegexGolf\">RegexGolf</a></li>\n",
280+
" <li><a href=\"https://www.hackerrank.com/domains/regex\">Hackerrank</a></li>\n",
281+
" </ul>\n",
282+
"</p>"
283+
]
284+
}
285+
],
286+
"metadata": {
287+
"kernelspec": {
288+
"display_name": "Python 3",
289+
"language": "python",
290+
"name": "python3"
291+
},
292+
"language_info": {
293+
"codemirror_mode": {
294+
"name": "ipython",
295+
"version": 3
296+
},
297+
"file_extension": ".py",
298+
"mimetype": "text/x-python",
299+
"name": "python",
300+
"nbconvert_exporter": "python",
301+
"pygments_lexer": "ipython3",
302+
"version": "3.7.1"
303+
}
304+
},
305+
"nbformat": 4,
306+
"nbformat_minor": 2
307+
}

week10/images/logo.png

33.9 KB
Loading

0 commit comments

Comments
 (0)