Python3 7. Инструкция in,цикл while,replace(),исключения

21.09.2016
39
55
29
Оттуда
#1
Инструкция in

Служит для проверки членства объекта , инструкция возвращает два значения "True" если элемент является членом или "False" если нет.
Использование инструкции in в цикле for:
Python:
str_list = ["one", "two", "three", "four", "five"]
for elem in str_list:
    if elem == "one"
         print("one found")
Данный пример хорош но слишком медлителен если элементов в списке очень много, более быстрый способ использовать инструкцию in непосредственно к самому списку.
Python:
str_list = ["one", "two", "three", "four", "five"]
one_found = "one" in str_list 
# вернет значение "True" так как элемент "one" есть в списке
six_found = "six" in str_list
# вернет "False" так как элемента "six" нет в списке
Присвоение переменной среза списка
Python:
list_slice = str_list[1:4]
list_slice_2 = str_list[3:]
Метод replace()

Метод replace() возвращает копию строки с указанными изменениями, метод принимает 2 аргумента то что необходимо заменить и то чем необходимо заменить
Python:
sample_string = "my,name,is,Shawn"
sample_string = sample_string.replace(",", " ") # замена запятых пробелами 
print(sample_string)
"my name is Shawn"

Цикл while

Цикл while будет работать пока условие истинно , условием может быть любое ненулевое число и не пустое значение
Python:
while 1:
      print("hello") # простейший бесконечный цикл
цикл будет работать пока x меньше 10:
Python:
x = 0
while x < 10:
    x = x + 1
    print(x)
условный оператор if в цикле while:
Python:
state = True
count = 1
while state:
    count += 1
    if count > 1000:
        print("Счетчик достиг тысячи")
        state = False
Оператор continue
continue используется в циклах для игнорирования части кода и запуска итерации по новой:
Python:
#! /usr/bin/python3
while True:
    user_input = int(input("введите число "))
    if user_input < 10:
        print("число меньше 10")
        print("введите другое число")
        continue
    if user_input > 100:
        print("ваше число больше 100")
Оператор break
используется для прерывания дальнейшей итерации кода или же для выхода из цикла:
Python:
#! /usr/bin/python3
while True:
    user_input = int(input("введите число "))
    if user_input < 10:
        print("число меньше 10")
        print("введите другое число")
        continue
    if user_input > 100:
        print("ваше число больше 100")
        break
print("Выход из цикла")
Обработка исключений try/except/finally + else
Что бы не прерывать выполнение вашего кода с ошибкой , в Python существует обработка исключений
оператор try выполняет код который находитс между try и except если исключение не возникло то блок
except пропускается
очень похоже на условный оператор if с необязательными частями elif и else
если возникло исключение то выполняется except с указанным исключением
finally выполняется в любом случае
else выпоняется если исключение не возникло
BaseException - базовое исключение, от которого берут начало все остальные.

SystemExit - исключение функции sys.exit при выходе из программы.
KeyboardInterrupt - при прерывании программы пользователем сочетанием клавиш Ctrl+C
GeneratorExit - порождается при вызове метода close объекта generator.
Exception - а вот тут уже заканчиваются полностью системные исключения (которые лучше не трогать) и начинаются обыкновенные, с которыми можно работать.

StopIteration - порождается встроенной функцией next, если в итераторе больше нет элементов.
ArithmeticError - арифметическая ошибка.

FloatingPointError - порождается при неудачном выполнении операции с плавающей запятой. На практике встречается нечасто.
OverflowError - возникает, когда результат арифметической операции слишком велик для представления. Не появляется при обычной работе с целыми числами (так как python поддерживает длинные числа), но может возникать в некоторых других случаях.
ZeroDivisionError - деление на ноль.
AssertionError - выражение в функции assert ложно.
AttributeError - объект не имеет данного атрибута (значения или метода).
BufferError - операция, связанная с буфером, не может быть выполнена.
EOFError - функция наткнулась на конец файла и не смогла прочитать то, что хотела.
ImportError - не удалось импортирование модуля или его атрибута.
LookupError - некорректный индекс или ключ.

IndexError - индекс не входит в диапазон элементов.
KeyError - несуществующий ключ (в
словаре, множестве или другом объекте).
MemoryError - недостаточно памяти.
NameError - не найдено переменной с таким именем.

UnboundLocalError - сделана ссылка на локальную переменную в
функции, но переменная не определена ранее.
OSError - ошибка, связанная с системой.

BlockingIOError
ChildProcessError - неудача при операции с дочерним процессом.
ConnectionError - базовый класс для исключений, связанных с подключениями.
BrokenPipeError
ConnectionAbortedError
ConnectionRefusedError
ConnectionResetError
FileExistsError - попытка создания файла или директории, которая уже существует.
FileNotFoundError - файл или директория не существует.
InterruptedError - системный вызов прерван входящим сигналом.
IsADirectoryError - ожидался файл, но это директория.
NotADirectoryError - ожидалась директория, но это файл.
PermissionError - не хватает прав доступа.
ProcessLookupError - указанного процесса не существует.
TimeoutError - закончилось время ожидания.
ReferenceError - попытка доступа к атрибуту со слабой ссылкой.
RuntimeError - возникает, когда исключение не попадает ни под одну из других категорий.
NotImplementedError - возникает, когда абстрактные методы класса требуют переопределения в дочерних классах.
SyntaxError - синтаксическая ошибка.

IndentationError - неправильные отступы.
TabError - смешивание в отступах табуляции и пробелов.
SystemError - внутренняя ошибка.
TypeError - операция применена к объекту несоответствующего типа.
ValueError - функция получает аргумент правильного типа, но некорректного значения.
UnicodeError - ошибка, связанная с кодированием / раскодированием unicode в строках.

UnicodeEncodeError - исключение, связанное с кодированием unicode.
UnicodeDecodeError - исключение, связанное с декодированием unicode.
UnicodeTranslateError - исключение, связанное с переводом unicode.
Warning - предупреждение.
Python:
#! /usr/bin/python3

import random                                                        # импорт модуля


print("Загадано число от 0 до 10")
count = 1                                                            # счетчик кол-ва попыток
fail_try = 0                                                        # кол-во ошибок
win_num = random.randint(0, 10)                                        # выйграшное число случайно выбирается от 0 до 10
while True:
    try:                                                            # оператор
        num = int(input("Введите ваше число "))                        # запрос у пользователя ввести число
        if num > 10:                                                # если число больше 10
            print("Число должно быть не больше 10")                    # вывод сообщения юзеру
            continue                                                # итерация начинается с начала игнорируя остальной код
        if win_num == num:                                            # если юзер угадывает число
            print("Поздравляем вы выйграли")
            print("Вы угадали число за " + str(count) + " раз(а)")  
            input("Нажмите Enter для выхода")                      
            break                                                    # прерывает выполнение кода
        else:
            if win_num != num:                                      
                if win_num > num:
                    print("Вы не угадали")
                    print("Выйграшное число больше чем вы ввели")
                elif win_num < num:
                    print("Вы не угадали")
                    print("Выйграшное число меньше чем вы ввели")
                fail_try += 1                                        # после каждого фейла +1
                count += 1                                            # счетчик попыток
                if fail_try == 3:                                    # если 3 раза число не верно
                    win_num = random.randint(0, 10)                    # выйграшное число изменяется
                    fail_try = 0                                    # счетчик фейлов становится 0
                    print("Выйграшное число изменилось")
    except ValueError as err:                                        # обработка исключения неправильного ввода
        print("Вы ввели не целое число")                          
    else:                                                            # выполняется если нет исключений
        print("Код работает без проблем")
    finally:
        print("эта часть всегда будет выполнятся")                    # выполняется всегда
to be continued...
если у вас есть замечания или есть чем дополнить статьи , буду признателен за вашу помощь
 

MSSERG

New Member
17.10.2016
2
0
19
#2
шикарные статэйки, всё так коротко и по делу, аффтор красава)

блин... это последняя статэйка как я понял... потратил пол часа, повторил то что знаю))

- когда новые статейки выйдут?
 
Последнее редактирование модератором:

ujif

New Member
31.05.2017
3
0
56
#3
вернет "False" так как элемента "six" нет в списке
боюсь спросить и как же это все вернет true или false ... функцию какую=то надо дописать
которая это все вернет, а так только пустое место после выполнения проги получается
 
здесь возвращает ошибку
 

Vander

Well-Known Member
Администратор
16.01.2016
965
2 253
28
#4
боюсь спросить и как же это все вернет true или false ... функцию какую=то надо дописать
которая это все вернет, а так только пустое место после выполнения проги получается
Автор, забыл добавить функцию print, можно ее добавить руками, либо обратиься непосредственно к переменной.

здесь возвращает ошибку
Не указано двоеточие, после условия
 
10.10.2016
11
8
#6
Код:
str_list = ["one", "two", "three", "four", "five"]

for elem in str_list:
    if elem == "one":
            print("one found")
вот так двоеточие ,и про отступы тоже не надо забывать..
str_list = ["one", "two", "three", "four", "five"]
for elem in str_list
if elem == "one"
print("one found")
в каком месте должно быть двоеточие ? ставил двоеточие и после условия - ошибку кажет
 

ujif

New Member
31.05.2017
3
0
56
#7
str_list = ["one", "two", "three", "four", "five"]
после этой строки идет красная полоса а внизу
" SyntaxError: multiple statements found while compiling a single statement "
может IDLE имеет значение , делаю в python 3.6
 
спасибо за поддержку всем кто ответил мне