commit 8eaa630f677b05d542990b2b918820dfc465543f Author: Pavel Marychev <marychevpavel@gmail.com> Date: Sat Jul 31 17:10:28 2021 +0400 init diff --git a/ch1/rock.py b/ch1/rock.py new file mode 100644 index 0000000..e795413 --- /dev/null +++ b/ch1/rock.py @@ -0,0 +1 @@ +print('You rock!') diff --git a/ch2/dogcalc.py b/ch2/dogcalc.py new file mode 100644 index 0000000..c418a3e --- /dev/null +++ b/ch2/dogcalc.py @@ -0,0 +1,6 @@ +dog_name = input('Как зовут вашу собаку? ') +dog_age = input('Сколько лет вашей собаке? ') +human_age = int(dog_age) * 7 +# print(human_age) +print('Вашей собаке', dog_name, 'сейчас', human_age, 'по меркам людей') + diff --git a/ch3/rock.py b/ch3/rock.py new file mode 100644 index 0000000..1c86704 --- /dev/null +++ b/ch3/rock.py @@ -0,0 +1,41 @@ +# Импорт библотеки рандом, для генерации случайных чисел +import random +winner = '' +random_choice = random.randint(0, 2) +# print('Компьютер выбирает', random_choice) +# присваиваем строку результату рандомного числа +if random_choice == 0: + computer_choice = 'камень' +elif random_choice == 1: + computer_choice = 'бумага' +else: + computer_choice = 'ножницы' + +# print('Компьюетр выбирает', computer_choice) +user_choice = '' +# пользователь вводит свои данные +# user_choice = input('камень, ножницы или бумага? ') +while (user_choice != 'камень' + and user_choice != 'ножницы' + and user_choice != 'бумага'): + user_choice = input('камень, ножницы или бумага? ') +# print('Вы выбрали', user_choice, 'компьютер выбрал', computer_choice) +# логика программы +if computer_choice == user_choice: + winner = 'ничья' +elif computer_choice == 'бумага' and user_choice == 'камень': + winner = 'Компьютер' +elif computer_choice == 'камень' and user_choice == 'ножницы': + winner = 'Компьютер' +elif computer_choice == 'ножницы' and user_choice == 'бумага': + winner = 'Компьютер' +else: + winner = 'Пользователь' + +# print(winner, 'выиграл!') +# результат программы, вывод на экран +if winner == 'ничья': + print('Мы оба выбрали', computer_choice, 'играем снова.') +else: + print(winner, 'выиграл, я выбрал', computer_choice, '.') + diff --git a/ch4/bubbles.py b/ch4/bubbles.py new file mode 100644 index 0000000..a9c4c5e --- /dev/null +++ b/ch4/bubbles.py @@ -0,0 +1,51 @@ +scores = [ + 60, 50, 60, 58, 54, 54, 58, 50, 52, + 54, 48, 69, 34, 55, 51, 52, 44, 51, + 69, 64, 66, 55, 52, 61, 46, 31, 57, + 52, 44, 18, 41, 53, 55, 61, 51, 44 +] +costs = [ + .25, .27, .25, .25, .25, .25, + .33, .31, .25, .29, .27, .22, + .31, .25, .25, .33, .21, .25, + .25, .25, .28, .25, .24, .22, + .20, .25, .30, .25, .24, .25, + .25, .25, .27, .25, .26, .29 +] +# i = 0 +length = len(scores) +max = 0 +min = 0 +max_list = [] +# while i < length: +for i in range(length): + print('Пузырьковый раствор #' + str(i), '- результат:', scores[i]) + # i += 1 + if max < scores[i]: + max = scores[i] +print('Пузырьковых тестов:', length) +print('Наибольший результат:', max) +for i in range(length): + if scores[i] == max: + max_list.append(i) + +cost = 100.0 +most_effective = 0 +# for i in range(len(costs)): +# if scores[i] == max and costs[i] <= cost: +# most_effective = i +# cost = costs[i] + +# for i in max_list: +# if costs[i] <= cost: +# most_effective = i +# cost = costs[i] + +for i in range(len(max_list)): + index = max_list[i] + if cost > costs[index]: + most_effective = index + cost = costs[index] + +print('Наибольший результат:', max_list) +print('Раствор:', most_effective, 'самый выгодный, его цена -', cost) diff --git a/ch4/scores.py b/ch4/scores.py new file mode 100644 index 0000000..b6af5d5 --- /dev/null +++ b/ch4/scores.py @@ -0,0 +1,16 @@ +scores = [ + 60, 50, 60, 58, 54, 54, 58, 50, 52, + 54, 48, 69, 34, 55, 51, 52, 44, 51, + 69, 64, 66, 55, 52, 61, 46, 31, 57, + 52, 44, 18, 41, 53, 55, 61, 51, 44 +] +i = 0 +max = 0 + +for i in range(len(scores)): + print('Пузырьковый раствор #', i, '- результат:', scores[i]) + if max < scores[i]: + max = scores[i] +print('Пузырьковых тестов:', i) +print('Наибольший результат:', max) +print(max in scores) diff --git a/ch4/sort.py b/ch4/sort.py new file mode 100644 index 0000000..808d76e --- /dev/null +++ b/ch4/sort.py @@ -0,0 +1,27 @@ +scores = [ + 60, 50, 60, 58, 54, 54, 58, 50, 52, + 54, 48, 69, 34, 55, 51, 52, 44, 51, + 69, 64, 66, 55, 52, 61, 46, 31, 57, + 52, 44, 18, 41, 53, 55, 61, 51, 44 +] + +number_of_list = len(scores) +solution_numbers = list(range(number_of_list)) + +def bubble_sort(list, numbers): + swapped = True + while swapped: + swapped = False + for i in range(len(list)-1): + if list[i] < list[i+1]: + temp = list[i] + list[i] = list[i+1] + list[i+1] = temp + temp = numbers[i] + numbers[i] = numbers[i + 1] + numbers[i + 1] = temp + swapped = True + for i in range(0, 5): + print(str(i + 1) + '.', 'Пузырьковый раствор №' + str(solution_numbers[i]), '- результат:', scores[i]) + +bubble_sort(scores, solution_numbers) diff --git a/ch4/super.py b/ch4/super.py new file mode 100644 index 0000000..f707325 --- /dev/null +++ b/ch4/super.py @@ -0,0 +1,16 @@ +characters = 'wasitar' +output = '' +length = len(characters) +i = 0 +while (i < length): + output = output + characters[i] + i += 1 + +length = length * -1 +i = -2 + +while (i >= length): + output = output + characters[i] + i = i -1 + +print(output) diff --git a/ch5/avatar.py b/ch5/avatar.py new file mode 100644 index 0000000..4cec8a9 --- /dev/null +++ b/ch5/avatar.py @@ -0,0 +1,14 @@ +def get_attribute(query, default): + question = query + ' [' + default + ']? ' + answer = input(question) + if answer == '': + answer = default + print('Вы выбрали', answer) + return answer + +hair = get_attribute('Цвет волос', 'темные') +hair_lenght = get_attribute('Длина волос', 'короткие') +eye = get_attribute('Цвет глаз', 'голубые') +gender = get_attribute('Пол', 'женский') +glasses = get_attribute('Носит очки', 'нет') +beard = get_attribute('Носит бороду', 'нет') \ No newline at end of file diff --git a/ch5/bark.py b/ch5/bark.py new file mode 100644 index 0000000..aec3b61 --- /dev/null +++ b/ch5/bark.py @@ -0,0 +1,11 @@ +def bark(name, weight): + if weight > 20: + print(name, 'говорит ГАВ-ГАВ') + else: + print(name, 'говорит гав-гав') + + +bark('Тузик', 40) +bark('Смайли', 9) +bark('Джексон', 12) +bark('Филя', 65) diff --git a/ch6/analyze.py b/ch6/analyze.py new file mode 100644 index 0000000..edba47a --- /dev/null +++ b/ch6/analyze.py @@ -0,0 +1,90 @@ +import ch1text + +def count_syllables_in_word(word): + count = 0 + + endings = '.,;!?:' + last_char = word[-1] + + if last_char in endings: + processed_word = word[:-1] + else: + processed_word = word + + if len(processed_word) <= 3: + return 1 + + if processed_word[-1] in 'eE': + processed_word = processed_word[:-1] + + vowels = 'aeiouAEIOU' + prev_char_was_vowel = False + for char in processed_word: + if char in vowels: + if not prev_char_was_vowel: + count += 1 + prev_char_was_vowel = True + else: + prev_char_was_vowel = False + + if processed_word[-1] in 'yY': + count += 1 + + return count + +def count_syllables(words): + count = 0 + + for word in words: + word_count = count_syllables_in_word(word) + count = count + word_count + + return count + +def count_sentences(text): + count = 0 + + for char in text: + if char in ('.', '?', '!'): + count += 1 + return count + +def output_results(score): + if score >= 90: + return 'Уровень 5-го класса' + elif score >= 80: + return 'Уровень 6-го класса' + elif score >= 70: + return 'Уровень 7-го класса' + elif score >= 60: + return 'Уровень 8-9-го класса' + elif score >= 50: + return 'Уровень 10-11-го класса' + elif score >= 30: + return 'Уровень студента вуза' + else: + return 'Уровень выпускнинка вуза' + +def compute_readability(text): + total_words = 0 + total_sentences = 0 + total_syllables = 0 + score = 0 + + words = text.split() + total_words = len(words) + total_sentences = count_sentences(text) + total_syllables = count_syllables(words) + + score = (206.835 - 1.015 * (total_words / total_sentences) - 84.6 * (total_syllables / total_words)) + score_result = output_results(score) + + # print(words) + print(total_words, 'слов') + print(total_sentences, 'предложений') + print(total_syllables, 'слогов') + print(score, ' - удобочитаемость') + print(score_result) + # print(text) + +compute_readability(ch1text.text) diff --git a/ch6/ch1text.py b/ch6/ch1text.py new file mode 100644 index 0000000..b148343 --- /dev/null +++ b/ch6/ch1text.py @@ -0,0 +1,33 @@ +text = '''The first thing that stands between you and writing your first, real, +piece of code, is learning the skill of breaking problems down into +acheivable little actions that a computer can do for you. Of course, +you and the computer will also need to be speaking a common language, +but we'll get to that topic in just a bit. + +Now breaking problems down into a number of steps may sound a new +skill, but its actually something you do every day. Let’s look at an +example, a simple one: say you wanted to break the activity of fishing +down into a simple set of instructions that you could hand to a robot, +who would do your fishing for you. Here’s our first attempt to do that, +check it out: + +You can think of these statements as a nice recipe for fishing. Like any +recipe, this one provides a set of steps, that when followed in order, +will produce some result or outcome in our case, hopefully, catching +some fish. + +Notice that most steps consists of simple instruction, like "cast line +into pond", or "pull in the fish." But also notice that other +instructions are a bit different because they depend on a condition, +like “is the bobber above or below water?". Instructions might also +direct the flow of the recipe, like "if you haven’t finished fishing, +then cycle back to the beginning and put another worm on the hook." +Or, how about a condition for stopping, as in “if you’re done” then go +home. + +You’re going to find these simple statements or instructions are the +first key to coding, in fact every App or software program you’ve ever +used has been nothing more than a (sometimes large) set of simple +instructions to the computer that tell it what to do.''' + +# print(text) diff --git a/ch6/text.txt b/ch6/text.txt new file mode 100644 index 0000000..e972636 --- /dev/null +++ b/ch6/text.txt @@ -0,0 +1,31 @@ +The first thing that stands between you and writing your first, real, +piece of code, is learning the skill of breaking problems down into +acheivable little actions that a computer can do for you. Of course, +you and the computer will also need to be speaking a common language, +but we'll get to that topic in just a bit. + +Now breaking problems down into a number of steps may sound a new +skill, but its actually something you do every day. Let’s look at an +example, a simple one: say you wanted to break the activity of fishing +down into a simple set of instructions that you could hand to a robot, +who would do your fishing for you. Here’s our first attempt to do that, +check it out: + +You can think of these statements as a nice recipe for fishing. Like any +recipe, this one provides a set of steps, that when followed in order, +will produce some result or outcome in our case, hopefully, catching +some fish. + +Notice that most steps consists of simple instruction, like "cast line +into pond", or "pull in the fish." But also notice that other +instructions are a bit different because they depend on a condition, +like “is the bobber above or below water?". Instructions might also +direct the flow of the recipe, like "if you haven’t finished fishing, +then cycle back to the beginning and put another worm on the hook." +Or, how about a condition for stopping, as in “if you’re done” then go +home. + +You’re going to find these simple statements or instructions are the +first key to coding, in fact every App or software program you’ve ever +used has been nothing more than a (sometimes large) set of simple +instructions to the computer that tell it what to do.