MRX
Advanced
- May 23, 2020
- 50
- 137
Привет!
С помощью этого скрипта на python можно получить периметр квадрата, а ещё я постараюсь вам объяснить, что да как тут происходит!
Разбор:
import sys - Этот модуль обеспечивает доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, тесно взаимодействующим с интерпретатором.
sys.argv - что это?
разберём такой код:
теперь запускаем этот скрипт.
вау, получаем ещё и массив!
type просто для теста вывел что бы вы знали)
Значение sys.argv – это список аргументов командной строки, которые причастны к скрипту Python.
0 элементом будет всегда название самого скрипта, потому что python3.9 это запуск программы.
test-.py - это 0 элемент.
Число 10 - это будет 1 элементом
я пропущу пока что все if'ы и поговорим как сразу написать рабочую программу
создаём переменную
каким же способом мы посчитаем периметр квадрата? Элементарно!
зачем здесь int ? Потому что если не будет int, будет умножаться строка и вместо того что бы получить 40 при умножении 10 * 4 получим 10101010.
что такое f !!?? f-строки делают очень простую вещь — они берут значения переменных, которые есть в текущей области видимости, и подставляют их в строку.
Начиная с версии 3.6 в Python появился новый тип строк — f-строки, которые буквально означают «formatted string». Эти строки улучшают читаемость кода, а также работают быстрее чем другие способы форматирования. F-строки задаются с помощью литерала «f» перед кавычками.
Классно у нас рабочий код!
Делаем программу понятной для тупеньких пользователей 
Но что будет если мы ничего не введём? Будет ужасная Ошибка. Вот мы тупенький пользователь который не прочитал инструкцию и потом ходит топает ногами, и думает что программа не работает, так давайте дадим понять что пользователь сам тупенький
Вот ошибка
IndexError: list index out of range, т.е в массиве sys.argv не находиться 1-ый элемент, ну очевидно мы его не передали.
Даже если знать не знать язык всё интуитивно понятно, если(if) длина аргумента ( len(sys.argv) ) , меньше 2-ух то выводим следующее, и выходим из программы
исход:
Отлично теперь мы не получаем ошибку от пустоты, но что будет если мы введём не число.... А например буквы.
Хорошо, это мы тоже исправим
есть 2 варианта как это исправить
1. это обработка исключений
2. Это мы возьмём значение, а потом просто проверим его
Я выбрал 2-ой способ.
Вот и получили рабочую программу
Всем спасибо, надеюсь кому то было полезно!
С помощью этого скрипта на python можно получить периметр квадрата, а ещё я постараюсь вам объяснить, что да как тут происходит!
Python:
import sys
if len(sys.argv) < 2:
print("Передайте длину стороны квадрата!")
exit()
square_side = sys.argv[1]
if not square_side.isnumeric():
print("Введите число в качестве стороны квадрата!")
exit()
perimeter = int(square_side) * 4
print(f"Периметр квадрата со стороной {square_side} равен {perimeter}")
import sys - Этот модуль обеспечивает доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, тесно взаимодействующим с интерпретатором.
sys.argv - что это?
разберём такой код:
Python:
import sys
print(sys.argv)
print(type(sys.argv))
Code:
>>> python3.9 test-.py 10
['test-.py', '10']
<class 'list'>
type просто для теста вывел что бы вы знали)
Значение sys.argv – это список аргументов командной строки, которые причастны к скрипту Python.
0 элементом будет всегда название самого скрипта, потому что python3.9 это запуск программы.
test-.py - это 0 элемент.
Число 10 - это будет 1 элементом
я пропущу пока что все if'ы и поговорим как сразу написать рабочую программу
создаём переменную
Python:
square_side = sys.argv[1]
Python:
perimeter = int(square_side) * 4
Python:
print(f"Периметр квадрата со стороной {square_side} равен {perimeter}")
Начиная с версии 3.6 в Python появился новый тип строк — f-строки, которые буквально означают «formatted string». Эти строки улучшают читаемость кода, а также работают быстрее чем другие способы форматирования. F-строки задаются с помощью литерала «f» перед кавычками.
Классно у нас рабочий код!
Python:
import sys
square_side = sys.argv[1]
perimeter = int(square_side) * 4
print(f"Периметр квадрата со стороной {square_side} равен {perimeter}")
Но что будет если мы ничего не введём? Будет ужасная Ошибка. Вот мы тупенький пользователь который не прочитал инструкцию и потом ходит топает ногами, и думает что программа не работает, так давайте дадим понять что пользователь сам тупенький
Вот ошибка
Code:
python3.9 test.py
Traceback (most recent call last):
File "/mnt/e/test.py", line 3, in <module>
square_side = sys.argv[1]
IndexError: list index out of range
Python:
if len(sys.argv) < 2:
print("Передайте длину стороны квадрата!")
exit()
исход:
Python:
import sys
if len(sys.argv) < 2:
print("Передайте длину стороны квадрата!")
exit()
square_side = sys.argv[1]
perimeter = int(square_side) * 4
print(f"Периметр квадрата со стороной {square_side} равен {perimeter}")
Хорошо, это мы тоже исправим
есть 2 варианта как это исправить
1. это обработка исключений
2. Это мы возьмём значение, а потом просто проверим его
Я выбрал 2-ой способ.
Python:
if not square_side.isnumeric():
print("Введите число в качестве стороны квадрата!")
exit()
Вот и получили рабочую программу
Всем спасибо, надеюсь кому то было полезно!