5. נקי סינטקס
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)
18. ?תכנות זה מה
הוא אם לבדוק רוצים ואנו ,שלם חיובי מספר ,N נתון
11 :ראשוני
צעדiשאריתפעולה
1211 -ב i את קדם
2321 -ב i את קדם
3431 -ב i את קדם
4521 -ב i את קדם
5651 -ב i את קדם
6741 -ב i את קדם
7831 -ב i את קדם
8921 -ב i את קדם
91011 -ב i את קדם
1011׳אמת׳ החזר
19. ?תכנות זה מה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))
20. ?תכנות זה מה
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))
26. פיבונצ׳י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))
28. פיבונצ׳י
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))
29. פיבונצ׳י
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)
30. פיבונצ׳י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))
31. פיבונצ׳י
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))
33. רקורסיה
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))
34. רקורסיה
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))
35. רקורסיה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))
36. רקורסיה
%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
40. משתנים
What’s in a name? that which we call a rose
By any other name would smell as sweet
השושנ לו שנקרא מה ?בשם יש מה
אחר שם כל תחת מתוק יהיה ריחו
51. תרגול
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]))
52. תרגול
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]))