Прошёл главу 8

This commit is contained in:
Марычев Павел Иванович 2021-08-01 00:38:49 +04:00
parent dab0cfc73c
commit 9e8291a54e
5 changed files with 146 additions and 0 deletions

32
ch8/average_age.py Normal file
View File

@ -0,0 +1,32 @@
def average_age(name):
average_age = 0
i = 0
friends = users[name]['Друзья']
for friend in friends:
average_age += users[friend]['Возраст']
i += 1
average_age = average_age / i
return average_age
def anti_soc(users):
max = 1000
for name in users:
user = users[name]
friends = user['Друзья']
if len(friends) < max:
most_anti_soc = name
max = len(friends)
return most_anti_soc
users = {}
users['Ким'] = {'Эл. почта': 'kim@oreilly.com', 'Пол': 'ж', 'Возраст': 27, 'Друзья': ['Джон', 'Джош']}
users['Джон'] = {'Эл. почта': 'john@oreilly.com', 'Пол': 'м', 'Возраст': 24, 'Друзья': ['Ким', 'Джош']}
users['Джош'] = {'Эл. почта': 'josh@oreilly.com', 'Пол': 'м', 'Возраст': 32, 'Друзья': ['Ким']}
print(average_age('Ким'))
print(average_age('Джон'))
print(average_age('Джош'))
print(anti_soc(users))

29
ch8/fibonacci.py Normal file
View File

@ -0,0 +1,29 @@
import time
cache = {}
def fibonacci(n):
'''
:param n: - число
:return: - булево
Время выполнения будет очень - очень долгим
'''
global cache
if n in cache:
return cache[n]
if n == 0:
return 0
elif n == 1:
return 1
else:
result = fibonacci(n - 1) + fibonacci(n - 2)
cache[n] = result
return result
for i in range(20, 55, 5):
start = time.time()
result = fibonacci(i)
end = time.time()
duration = end - start
print(i, result, duration)

32
ch8/koch.py Normal file
View File

@ -0,0 +1,32 @@
import turtle
def setup(pencil):
pencil.color('blue')
pencil.penup()
pencil.goto(-200, 100)
pencil.pendown()
def koch(pencil, size, order):
if order == 0:
pencil.forward(size)
else:
for angle in [60, -120, 60, 0]:
koch(pencil, size/3, order-1)
pencil.left(angle)
def main():
pencil = turtle.Turtle()
setup(pencil)
order = 4
size = 400
for i in range(0, 3):
koch(pencil, size, order)
pencil.right(120)
if __name__ == '__main__':
main()
turtle.tracer(100)
turtle.mainloop()

14
ch8/palindrome.py Normal file
View File

@ -0,0 +1,14 @@
def is_palindrome(word):
if len(word) <= 0:
return True
else:
if word[0] == word[-1]:
return is_palindrome(word[1:-1])
else:
return False
words = ['tacocat', 'radar', 'yak', 'radar', 'kayjak']
for word in words:
print(is_palindrome(word))

39
ch8/sum.py Normal file
View File

@ -0,0 +1,39 @@
marbles = [10, 13, 39, 14, 41, 9, 3, 100]
def recursive_compute_sum(list):
if len(list) == 0:
return 0
else:
first = list[0]
rest = list[1:]
sum = first + recursive_compute_sum(rest)
return sum
sum = recursive_compute_sum(marbles)
print('Сумма равна', sum)
letter = 'radars'
def polindrom(str):
# с помощию цикла
# list = []
# ob_list = []
# for i in str:
# list.append(i)
# for i in str[::-1]:
# ob_list.append(i)
# if list == ob_list:
# return 'полиндром'
# else:
# return 'не полиндром'
# без цикла, просто через срез
if str == str[::-1]:
return 'полиндром'
else:
return 'не полиндром'
status = polindrom(letter)
print('Слово', letter, status)