ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Hello Python
?‫מנחשי×‬ ‫מפחד‬ ‫מי‬ :‫×ו‬
CC BY-SA 3.0 Dimid
?‫היו×‬ ‫נדבר‬ ‫מה‬ ‫על‬
*‫פייתון‬ ‫למה‬
*‫תכנות‬
*‫דוגמ×ות‬
‫ותנ××™×‬ ‫שכר‬
‫×ינטלקטו×לי‬ ‫×תגר‬
‫מהפכנית‬ ‫טכנולוגיה‬
‫לחו״ל‬ ‫נסיעות‬
‫מגולח‬ ‫ול×‬ ‫בטישרט‬ ‫לבו×‬
‫בהייטק‬ ‫לעבוד‬ ‫סיבות‬
?‫פייתון‬ ‫למה‬
‫נקי‬ ‫סינטקס‬
class Main {
public static final String[] NAMES =
{"Yuval", "Keren", "Dvir"};
public static void main(String[] argv) {
for (String s: NAMES) {
System.out.println("Hello " + s);
}
}
}
for s in ["Yuval", "Keren", "Dvir"]:
print("Hello " + s)
‫דינמיי×‬ ‫טיפוסי×‬
s = "Hello Python"
String s = "Hello Python";
‫עשירה‬ ‫ספריה‬
Hellopy
‫נ××™×‬ ‫כלי×‬
virtualenv
pyflakes
pip
?‫בפייתון‬ ‫נכתב‬ ‫מה‬
web
data science
Natural Language Toolkit
IOT
?‫תכנות‬ ‫זה‬ ‫מה‬
?‫תכנות‬ ‫זה‬ ‫מה‬
‫טבעונית‬ ‫גבינה‬ ‫עוגת‬ :‫מתכון‬
‫עד‬ ‫הלימון‬ ‫וגרידת‬ ‫הקוקוס‬ ‫×ו‬ ‫הסויה‬ ‫חלב‬ ‫ע×‬ ‫הביסקוויטי×‬ ‫פירורי‬ ‫×ת‬ ‫לערבב‬
‫×ו‬ ‫נוזלי×‬ ‫יותר‬ ‫מעט‬ ‫להוסיף‬ ‫ניתן‬ ,‫הצורך‬ ‫במידת‬ .‫בצק‬ ‫דמוית‬ ‫עיסה‬ ‫לקבלת‬
.‫הרצוי‬ ‫המרק×‬ ‫לקבלת‬ ‫פירור×™×‬
.‫מעט‬ ‫ששומנה‬ ‫תבנית‬ ‫על‬ ‫התערובת‬ ‫×ת‬ ‫לשטח‬
.‫×חידה‬ ‫עיסה‬ ‫לקבלת‬ ‫עד‬ ‫במיקסר‬ ‫המלית‬ ‫חומרי‬ ‫×ת‬ ‫לערבב‬
.‫הביסקוויטי×‬ ‫מעל‬ ‫העיסה‬ ‫×ת‬ ‫לצקת‬
.‫שעות‬ ‫למספר‬ ‫במקרר‬ ‫לצנן‬
?‫תכנות‬ ‫זה‬ ‫מה‬
‫הו×‬ ‫××‬ ‫לבדוק‬ ‫רוצי×‬ ‫ו×נו‬ ,‫של×‬ ‫חיובי‬ ‫מספר‬ ,N ‫נתון‬
‫ר×שוני‬
:‫×לגורית×‬
.12 -‫ל‬ i ‫×ת‬ ‫×תחל‬
.2:N -‫מ‬ ‫קטן‬ i ‫עוד‬ ‫כל‬

:‫ש×רית‬ ‫לל×‬ i -‫ב‬ ‫מתחלק‬ N ‫××‬ 2.1
‫׳שקר׳‬ ‫החזר‬ 2.1.1
:‫×חרת‬
1 -‫ב‬ i ‫×ת‬ ‫קד×‬ 2.1.2
‫׳×מת׳‬ ‫החזר‬ .3
?‫תכנות‬ ‫זה‬ ‫מה‬
‫הו×‬ ‫××‬ ‫לבדוק‬ ‫רוצי×‬ ‫ו×נו‬ ,‫של×‬ ‫חיובי‬ ‫מספר‬ ,N ‫נתון‬
9 :‫ר×שוני‬
‫צעד‬i‫ש×רית‬‫פעולה‬
1211 -‫ב‬ i ‫×ת‬ ‫קד×‬
230‫׳שקר׳‬ ‫החזר‬
?‫תכנות‬ ‫זה‬ ‫מה‬
‫הו×‬ ‫××‬ ‫לבדוק‬ ‫רוצי×‬ ‫ו×נו‬ ,‫של×‬ ‫חיובי‬ ‫מספר‬ ,N ‫נתון‬
11 :‫ר×שוני‬
‫צעד‬i‫ש×רית‬‫פעולה‬
1211 -‫ב‬ i ‫×ת‬ ‫קד×‬
2321 -‫ב‬ i ‫×ת‬ ‫קד×‬
3431 -‫ב‬ i ‫×ת‬ ‫קד×‬
4521 -‫ב‬ i ‫×ת‬ ‫קד×‬
5651 -‫ב‬ i ‫×ת‬ ‫קד×‬
6741 -‫ב‬ i ‫×ת‬ ‫קד×‬
7831 -‫ב‬ i ‫×ת‬ ‫קד×‬
8921 -‫ב‬ i ‫×ת‬ ‫קד×‬
91011 -‫ב‬ i ‫×ת‬ ‫קד×‬
1011‫׳×מת׳‬ ‫החזר‬
?‫תכנות‬ ‫זה‬ ‫מה‬import sys
def is_prime(n):
i = 2
while i < n:
if n % i == 0:
return False
else:
i = i + 1
return True
if __name__ == "__main__":
n = int(sys.argv[1])
print(is_prime(n))
?‫תכנות‬ ‫זה‬ ‫מה‬
import sys


# more pythonic
def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
if __name__ == "__main__":
n = int(sys.argv[1])
print(is_prime(n))
‫חידהâ¶Ä¬
‫חידהâ¶Ä¬
‫מדרגות‬‫דר×›×™×‬
11
22
33
4?
5?
‫חידהâ¶Ä¬
1, 1, 2, 3, 5, 8, …
‫פיבונצ׳י‬
import sys
def fib(n):
if n <= 2:
return 1
return fib(n - 2) + fib(n - 1)
if __name__ == "__main__":
n = int(sys.argv[1])
print(fib(n))
?‫יהודי‬ ‫מיהו‬
‫פיבונצ׳י‬import sys


# assume n >= 3
def fib(n):
sum_i = 0
i = 3
f2, f1 = 1, 1
while i <= n:
sum_i = f2 + f1
f2, f1 = f1, sum_i
i += 1
return sum_i
if __name__ == "__main__":
n = int(sys.argv[1])
print(fib(n))
‫פיבונצ׳י‬
f2, f1 = f1, f1 + f2
f2 = f1

f1 = f1 + f2
?
‫פיבונצ׳י‬
import sys
# more pythonic
def fib(n):
f2, f1 = 1, 1
for i in range(3, n + 1):
f2, f1 = f1, f1 + f2
return f1
if __name__ == "__main__":
n = int(sys.argv[1])
print(fib(n))
‫פיבונצ׳י‬
In [83]: %time %run fib 39
63245986
CPU times: user 15.5 s, sys: 63.1 ms,
total: 15.6 s

Wall time: 15.7 s
O(2â¿)
In [84]: %time %run fib2 39
63245986
CPU times: user 1.01 ms, sys: 664 µs,
total: 1.67 ms

Wall time: 1.14 ms
O(n)
‫פיבונצ׳י‬import sys
known = {
1: 1,
2: 1,
}
def fib(n):
if n in known:
return known[n]
known[n] = fib(n - 2) + fib(n - 1)
return known[n]
if __name__ == "__main__":
n = int(sys.argv[1])
print(fib(n))
‫פיבונצ׳י‬
import sys
from functools import lru_cache
# more pythonic
@lru_cache(maxsize=None)
def fib(n):
if n <= 2:
return 1
return fib(n - 2) + fib(n - 1)
if __name__ == "__main__":
n = int(sys.argv[1])
print(fib(n))
big O
http://bigocheatsheet.com/
‫רקורסיה‬
import sys
def power(x, n):
res = 1
while n > 0:
res *= x
n -= 1
return res
if __name__ == "__main__":
x = int(sys.argv[1])
n = int(sys.argv[2])
print(power(x, n))
‫רקורסיה‬
import sys
# assume n is a power of 2
def power(x, n):
if n == 2:
return x * x
return power(x, n / 2) * power(x, n / 2)
if __name__ == "__main__":
x = int(sys.argv[1])
n = int(sys.argv[2])
print(power(x, n))
‫רקורסיה‬import sys
def power(x, n):
if n == 1:
return x
elif n % 2 == 0:
half = power(x, n / 2)
return half * half
else:
return x * power(x, n - 1)
if __name__ == "__main__":
x = int(sys.argv[1])
n = int(sys.argv[2])
print(power(x, n))
‫רקורסיה‬
%time %run power2 2 65536

[…]

CPU times: user 110 ms, sys: 8.22 ms,
total: 118 ms
Wall time: 116 ms
%time %run power3 2 65536

[…]

CPU times: user 8.6 ms, sys: 1.37 ms,
total: 9.97 ms
Wall time: 12.7 ms
?‫עובד‬ ‫זה‬ ‫×יך‬
print(“helloâ€)
01010101
1100011
hello
language ≠
Implementation
‫חישוב‬ ‫כח‬
‫משתני×‬
What’s in a name? that which we call a rose

By any other name would smell as sweet

‫ה‬‫שושנ‬ ‫לו‬ ‫שנקר×‬ ‫מה‬ ?‫בש×‬ ‫יש‬ ‫מה‬
‫×חר‬ ‫ש×‬ ‫כל‬ ‫תחת‬ ‫מתוק‬ ‫יהיה‬ ‫ריחו‬
‫משתני×‬
cow_sound = "moo"
animals = ["antelope", "bat", "cat", "dog", "eagle"]
animal_to_voice = {
"antelope": "snort",
"bat": "spreech",
"cat": "meow",
"dog": "woof",
}
def make_sound(animal):
sound = animal_to_voice.get(animal, cow_sound)
print(sound)
‫משתני×‬
st = "moo"
lst = ["antelope", "bat", "cat", "dog", "eagle"]
a2v = {
"antelope": "snort",
"bat": "screech",
"cat": "meow",
"dog": "woof",
}
def sound(animal):
…
‫קובע‬ ‫כן‬ ‫הגודל‬
A ≠ a
‫משתני×‬ ‫סוגי‬
<x, y, z>
‫משתני×‬ ‫סוגי‬
a = b = 5
a = 1
b
a = b = [5]

a = [1]
b
‫משתני×‬ ‫סוגי‬
a = b = 5
a = 1
b
a = b = (5)

a = (1)
b
‫משתני×‬ ‫סוגי‬
a = b = 5
a = 1
b
a = b = “hiâ€â€¨
a = “thereâ€
b
‫משתני×‬ ‫סוגי‬
a = “hiâ€â€¨
id(a)

a += “thereâ€
id(a)
a = [“hiâ€]

id(a)

a += [“thereâ€]
id(a)
‫תרגול‬
$vim hello.py

$python hello.py

hello python
‫תרגול‬
import sys
def concat(n):
res = ''
for i in range(0, n):
res += str(i)
return res
if __name__ == '__main__':
concat(int(sys.argv[1]))
‫תרגול‬
import sys
def concat(n):
res = []
for i in range(0, n):
res += str(i)
return(''.join(res))
if __name__ == '__main__':
concat(int(sys.argv[1]))
‫תרגול‬
import sys
def concat(n):
res = []
for i in range(0, n):
res.append(str(i))
return(''.join(res))
if __name__ == '__main__':
concat(int(sys.argv[1]))
‫תרגול‬
import sys
def concat(n):
res = [str(i) for i in range(0, n)]
return(''.join(res))
if __name__ == '__main__':
concat(int(sys.argv[1]))
?‫כשנתקעי×‬ ‫קורה‬ ‫מה‬
comp.lang.python
docs.python.org/3/
?‫כשנתקעי×‬ ‫קורה‬ ‫מה‬
simple web-server
AMA
?‫הל×ה‬ ‫מה‬
0-100
Hellopy
Credits
CC ‫סדן‬ ‫מ×יר‬ - ‫שוקו‬‫פונט‬
‫ת״×‬ ‫×וני׳‬ ‫של‬ ‫הקורס‬ ‫על‬ ‫בחלקו‬ ‫מבוסס‬
(‫שייקספיר‬ ,‫דייקסטרה‬ ‫)ציטוט‬
The Hitchhiker’s Guide to Python!
Credits :‫תמונות‬
Wikipedia
Credits
:‫תמונות‬
xkcd ‫הישר×לי‬ ‫והטבעונות‬ ‫הצמחונות‬ ‫×תר‬
Remirat
pixabay

More Related Content

Hellopy