Создание более сложной программы на Python
Теперь, когда вы освоили основы Python, пришло время сделать следующий шаг и создать более сложную программу на Python. Эта программа будет генерировать ASCII - арты (рисунки из текстовых символов), которые представляют собой простые, но визуально интересные узоры, состоящие из текстовых символов. Реализуя эту программу, вы научитесь применять несколько важных концепций Python, таких как импорт модулей, определение функций и обработка аргументов командной строки.
Создание программы для генерации ASCII - артов
-
Сначала нам нужно открыть файл art.py
в WebIDE. Этот файл был создан во время настройки. Вы можете найти его в каталоге /home/labex/project
. Открытие этого файла является точкой входа для написания нашей программы по генерации ASCII - артов.
-
Как только файл открыт, вы заметите, что он может содержать некоторый существующий код. Мы должны удалить его, так как мы собираемся написать собственный код с нуля. Поэтому удалите весь существующий код в файле. Затем скопируйте следующий код в файл art.py
. Этот код является ядром нашего генератора ASCII - артов.
## art.py - A program to generate ASCII art patterns
import sys
import random
## Characters used for the art pattern
chars = '\|/'
def draw(rows, columns):
"""
Generate and print an ASCII art pattern with the specified dimensions.
Args:
rows: Number of rows in the pattern
columns: Number of columns in the pattern
"""
for r in range(rows):
## For each row, create a string of random characters
line = ''.join(random.choice(chars) for _ in range(columns))
print(line)
## This code only runs when the script is executed directly
if __name__ == '__main__':
## Check if the correct number of arguments was provided
if len(sys.argv) != 3:
print("Error: Incorrect number of arguments")
print("Usage: python3 art.py rows columns")
print("Example: python3 art.py 10 20")
sys.exit(1)
try:
## Convert the arguments to integers
rows = int(sys.argv[1])
columns = int(sys.argv[2])
## Call the draw function with the specified dimensions
draw(rows, columns)
except ValueError:
print("Error: Both arguments must be integers")
sys.exit(1)
-
После того, как вы скопировали код в файл, важно сохранить свои изменения. Вы можете сделать это, нажав Ctrl + S на клавиатуре. В качестве альтернативы вы можете перейти в меню и выбрать "File > Save" (Файл > Сохранить). Сохранение файла гарантирует, что ваш код будет сохранен и готов к запуску.
Понимание кода
Давайте рассмотрим более подробно, что делает эта программа. Понимание кода является важным условием для того, чтобы вы могли в будущем модифицировать и расширять его.
- Инструкции импорта: Строки
import sys
и import random
используются для подключения встроенных модулей Python. Модуль sys
предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором Python, а также к функциям, которые сильно взаимодействуют с интерпретатором. Модуль random
позволяет нам генерировать случайные числа, которые мы будем использовать для создания случайных ASCII - артов.
- Набор символов: Строка
chars = '\|/'
определяет набор символов, которые будут использоваться для создания нашего ASCII - арта. Эти символы будут случайным образом выбираться для формирования узоров.
- Функция
draw()
: Эта функция отвечает за создание ASCII - артов. Она принимает два аргумента, rows
и columns
, которые определяют размеры узора. Внутри функции используется цикл для создания каждой строки узора путем случайного выбора символов из набора chars
.
- Основной блок: Блок
if __name__ == '__main__':
представляет собой специальную конструкцию в Python. Он гарантирует, что код внутри этого блока выполняется только при прямом запуске файла art.py
. Если файл импортируется в другой файл на Python, этот код не будет выполняться.
- Обработка аргументов: Переменная
sys.argv
содержит аргументы командной строки, переданные программе. Мы проверяем, были ли переданы ровно 3 аргумента (имя скрипта и два числа, представляющих количество строк и столбцов). Это помогает нам убедиться, что пользователь предоставил правильный ввод.
- Обработка ошибок: Блок
try/except
используется для перехвата возможных ошибок. Если пользователь предоставит недопустимые входные данные, например, нечисловые значения для количества строк и столбцов, блок try
вызовет исключение ValueError
, а блок except
напечатает сообщение об ошибке и завершит программу.
Запуск программы
-
Чтобы запустить нашу программу, сначала нужно открыть терминал в WebIDE. В терминале мы будем вводить команды для выполнения нашего скрипта на Python.
-
Как только терминал открыт, нам нужно перейти в каталог проекта. Именно здесь находится наш файл art.py
. Используйте следующую команду в терминале:
cd ~/project
Эта команда изменяет текущий рабочий каталог на каталог проекта.
-
Теперь, когда мы находимся в правильном каталоге, мы можем запустить программу. Используйте следующую команду:
python3 art.py 5 10
Эта команда сообщает Python запустить скрипт art.py
с 5 строками и 10 столбцами. Когда вы запустите эту команду, вы увидите 5×10 узор символов, напечатанный в терминале. Вывод будет выглядеть примерно так:
|\//\\|\//
/\\|\|//\\
\\\/\|/|/\
//|\\\||\|
\|//|/\|/\
Помните, что фактический узор является случайным, поэтому ваш вывод будет отличаться от приведенного здесь примера.
-
Вы можете поэкспериментировать с разными размерами, изменив аргументы в команде. Например, попробуйте следующую команду:
python3 art.py 8 15
Это сгенерирует более крупный узор с 8 строками и 15 столбцами.
-
Чтобы увидеть, как работает обработка ошибок, попробуйте передать недопустимые аргументы. Запустите следующую команду:
python3 art.py
Вы должны увидеть сообщение об ошибке, подобное следующему:
Error: Incorrect number of arguments
Usage: python3 art.py rows columns
Example: python3 art.py 10 20
Эксперименты с кодом
Вы можете сделать ASCII - арты более интересными, изменив набор символов. Вот как вы можете это сделать:
-
Откройте файл art.py
снова в редакторе. Именно здесь мы будем вносить изменения в код.
-
Найдите переменную chars
в коде. Измените ее, чтобы использовать другие символы. Например, вы можете использовать следующий код:
chars = '*#@+.'
Это изменит набор символов, используемых для создания ASCII - арта.
-
После внесения изменений сохраните файл снова, нажав Ctrl + S или выбрав "File > Save" (Файл > Сохранить). Затем запустите программу с помощью следующей команды:
python3 art.py 5 10
Теперь вы увидите другой узор, используя новые символы.
Это упражнение демонстрирует несколько важных концепций Python, в том числе:
- Импорт модулей: Как подключать дополнительную функциональность из встроенных модулей Python.
- Определение функций: Как определять и использовать функции для организации кода.
- Обработка аргументов командной строки: Как принимать и обрабатывать пользовательский ввод с командной строки.
- Обработка ошибок с использованием
try/except
: Как элегантно обрабатывать ошибки в программе.
- Манипуляция строками: Как создавать и манипулировать строками для формирования ASCII - артов.
- Генерация случайных чисел: Как генерировать случайные значения для создания уникальных узоров.
- Генераторы списков: Конкретный способ создания списков в Python, который используется в функции
draw()
.