Просто поиск. Достаточно ясно выражает идею — что мы делаем:
for i, v in enumerate(a, start=1): if v in ‘SME’: print(i) break
Регулярное выражение. Если вы знакомы с регулярными выражениями — идея кода будет ясна:
import re m = re.search(‘[SME]’, a) if m: print(m.end())
Поиск отдельных символов. Код сложный и непонятный. Он тут из-за скорости:
i = len(a) for c in ‘SME’: j = a.find(c, 0, i) if j != -1: i = j if i != len(a): print(i + 1)
Отслеживать
ответ дан 24 мар в 19:49
Stanislav Volodarskiy Stanislav Volodarskiy
25.6k 3 3 золотых знака 15 15 серебряных знаков 46 46 бронзовых знаков
можно в enumerate передать единицу
24 мар в 19:52
24 мар в 19:53
с RegEx пожалуй самое короткое и понятное решение, если автору нужна 1 строка, то можно так: print(re.search(‘[SME]’, ».join(a)).start() + 1)
25 мар в 3:01
Для решения с re не хватает строки импорта
25 мар в 3:39
25 мар в 7:51
Практически не пишу на питоне, наверное поэтому для меня (после просмотра ответов тут и 5 минут в гугле для организации цикла по индексам строки) самый очевидный код для этой задачи оказался вот таким:
Урок 2. Python. Быстрый старт. Первая программа на Python
for i in range(len(a)): if a[i] in ‘SME’: print(i + 1) break
Что удивительно, он содержит примерно столько же букв, что и все остальные примеры.
Также надеюсь, что генератор range и операция поиска in реализованы в языке достаточно эффективно.
Отслеживать
19.3k 5 5 золотых знаков 20 20 серебряных знаков 55 55 бронзовых знаков
ответ дан 24 мар в 22:01
45.6k 6 6 золотых знаков 45 45 серебряных знаков 115 115 бронзовых знаков
range и in реализованы, по сути, на c , так что они работают достаточно эффективно
25 мар в 7:54
i = next((i+1 for i,x in enumerate(a) if x in «SME»), None) if i: print(i)
Отслеживать
ответ дан 26 мар в 2:06
121k 24 24 золотых знака 121 121 серебряный знак 293 293 бронзовых знака
Если выражение что-то найдет, выведет порядковый номер символа, если нет — 0.
Метод find() в подвыражениях возвращает индекс символа, если найдет, или -1 если не найдет. Поэтому прибавляем единицу к каждому результату поиска. Т.е. если не нашел, то -1+1 = 0 (или ложь), тогда переходим к вычислению следующего подвыражения через or . Если же нашел, то подвыражение возвращает число > 0, на этом вычисление заканчивается, а результат выводится.
a = ‘AASABBBMCCCEDDD’ print((a.find(‘S’) + 1) or (a.find(‘M’) + 1) or (a.find(‘E’) + 1))
Источник: ru.stackoverflow.com
Задачи по Python для начинающих от Tproger и GeekBrains
ПИШЕМ СВОЙ ЛЕГКИЙ ТАЙМЕР НА PYTHON ЗА 5 МИНУТ
Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке.
Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3.
Задача 1
Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] .
Выведите все элементы, которые меньше 5 .
Самый простой вариант, который первым приходит на ум — использовать цикл for :
for elem in a: if elem < 5: print(elem)
Также можно воспользоваться функцией filter , которая фильтрует элементы согласно заданному условию:
print(list(filter(lambda elem: elem < 5, a)))
И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:
print([elem for elem in a if elem < 5])
Задача 2
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] ;
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] .
Нужно вернуть список, который состоит из элементов, общих для этих двух списков.
Можем воспользоваться функцией filter :
result = list(filter(lambda elem: elem in b, a))
Или списковым включением:
result = [elem for elem in a if elem in b]
А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) > for d in (dict_a, dict_b, dict_c): result.update(d)
А можно с помощью «звёздочного» синтаксиса:
О звёздочном синтаксисе можно прочитать в нашей статье.
Задача 5
Найдите три ключа с самыми высокими значениями в словаре my_dict = .
Можно воспользоваться функцией sorted :
result = sorted(my_dict, key=my_dict.get, reverse=True)[:3]
Аналогичный результат можно получить с помощью функции nlargest из модуля heapq :
from heapq import nlargest result = nlargest(3, my_dict, key=my_dict.get)
Задача 6
Напишите код, который переводит целое число в строку, при том что его можно применить в любой системе счисления.
Второй аргумент функции int отвечает за указание основания системы счисления:
Задача 7
Нужно вывести первые n строк треугольника Паскаля. В этом треугольнике на вершине и по бокам стоят единицы, а каждое число внутри равно сумме двух расположенных над ним чисел.
def pascal_triangle(n): row = [1] y = [0] for x in range(max(n, 0)): print(row) row = [left + right for left, right in zip(row + y, y + row)] pascal_triangle(6)
Задача 8
Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.
Тут всё просто, достаточно сравнить строку с её обратной версией, для чего можно использовать встроенную функцию reversed:
def is_palindrome(string): return string == ».join(reversed(string)) print(is_palindrome(‘abba’))
Того же эффекта можно добиться с помощью срезов:
def is_palindrome(string): return string == string[::-1] print(is_palindrome(‘abba’))
Задача 9
Сделайте так, чтобы число секунд отображалось в виде дни:часы:минуты:секунды .
def convert(seconds): days = seconds // (24 * 3600) seconds %= 24 * 3600 hours = seconds // 3600 seconds %= 3600 minutes = seconds // 60 seconds %= 60 print(f’:::’) convert(1234565)
Задача 10
Вы принимаете от пользователя последовательность чисел, разделённых запятой. Составьте список и кортеж с этими числами.
values = input(‘Введите числа через запятую: ‘) ints_as_strings = values.split(‘,’) ints = map(int, ints_as_strings) lst = list(ints) tup = tuple(lst) print(‘Список:’, lst) print(‘Кортеж:’, tup)
Задача 11
Выведите первый и последний элемент списка.
lst = [1, 2, 3, 4, 5] print(f’Первый: ; последний: ‘)
Задача 12
Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла определить невозможно, выбросите исключение.
def get_extension(filename): filename_parts = filename.split(‘.’) if len(filename_parts) < 2: # filename has no dots raise ValueError(‘the file has no extension’) first, *middle, last = filename_parts if not last or not first and not middle: # example filenames: .filename, filename., file.name. raise ValueError(‘the file has no extension’) return filename_parts[-1] print(get_extension(‘abc.py’)) print(get_extension(‘abc’)) # raises ValueError print(get_extension(‘.abc’)) # raises ValueError print(get_extension(‘.abc.def.’)) # raises ValueError
Задача 13
При заданном целом числе n посчитайте n + nn + nnn.
def solve(n): n1 = n n2 = int(str(n) * 2) n3 = int(str(n) * 3) print(n1 + n2 + n3) solve(5)
Задача 14
Напишите программу, которая выводит чётные числа из заданного списка и останавливается, если встречает число 237.
numbers = [ 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, ] for x in numbers: if x == 237: break elif x % 2 == 0: print(x)
Задача 15
Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втором.
set_1 = set([‘White’, ‘Black’, ‘Red’]) set_2 = set([‘Red’, ‘Green’]) print(set_1 — set_2)
Задача 16
Выведите список файлов в указанной директории.
from os import listdir from os.path import isfile, join files = [f for f in listdir(‘/home’) if isfile(join(‘/home’, f))] print(files)
Задача 17
Сложите цифры целого числа.
def sum_digits(num): digits = [int(d) for d in str(num)] return sum(digits) print(sum_digits(5245))
Разработка на Python с нуля: роадмап программиста
Задача 18
Посчитайте, сколько раз символ встречается в строке.
string = ‘Python Software Foundation’ string.count(‘o’)
Задача 19
Поменяйте значения переменных местами.
Можно написать монструозную конструкцию в стиле языка C:
x = 5 y = 10 temp = x x = y y = temp
Но в Python есть более удобный способ для решения этой задачи:
x = 5 y = 10 x, y = y, x
Задача 20
С помощью анонимной функции извлеките из списка числа, делимые на 15.
nums = [45, 55, 60, 37, 100, 105, 220] result = list(filter(lambda x: not x % 15, nums))
Задача 21
Нужно проверить, все ли числа в последовательности уникальны.
def all_unique(numbers): return len(numbers) == len(set(numbers))
Задача 22
Напишите программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и самое длинное.
import collections text = ‘lorem ipsum dolor sit amet amet amet’ words = text.split() counter = collections.Counter(words) most_common, occurrences = counter.most_common()[0] longest = max(words, key=len) print(most_common, longest)
Хотите вырасти от новичка до профессионала? Факультет Python-разработки GeekUniversity даёт год опыта для вашего резюме. Обучайтесь на практических заданиях, по-настоящему освойте Python и станьте ближе к профессии мечты.
Узнать больше
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Поделиться
Что думаете?
Комментирую от имени компании
Показать все комментарии
Фотография
Обсуждают сейчас
Кто нибудь сможете расшифровать?171.
160. 101. 310. 61. 140.
10 популярных кодов и шифров
39 минут назад
Спасибо автору за статью! . Вот тут кстати можно пройти обучение промпт-инженерингу — https://www.qa.rocketbrain.ru/ai
Промт-инженер — IT-профессия будущего
2 часа назад
Насколько я понимаю, Brunch больше не будет поддерживаться
5 сборщиков модулей для приложений Node.js
6 часов назад
Чем больше опыта в разных языках, тем шире взгляд на задачу и лучше получается решение. Попытка все решать в пределах одной платформы не всегда оптимально. В свое время тоже плавно ушел с 1С на python и докатился так до C# и Angular и уже 8 лет как основная ось linux. Но это не отменяет предыдущий опыт, наоборот как раз позволяет полностью делать бэк, фронт и интеграцию с 1С силами одного человека.
Источник: tproger.ru
Конспект
Буду описывать здесь процесс выполнения различных работ.
Страницы
- Главная страница
- Карта блога
html
суббота, 16 февраля 2013 г.
Питон. Первая программа на Питоне
0. Итак, мы установили Питон. Теперь нам надо написать свою первую программу на Питоне. Будем писать стандартную программу “Hello World!”
1. Программа в IDLE Питона
1.1. Открываем в каком нибудь из установленных ранее Питонов, например Python 2.7, интегрированную среду разработки на языке Python (IDLE) Пуск-Все программы — Python 2.7 — IDLE(Python GUI):
![]() |
Вызов IDLE (Python GUI) |
1.2. В результате откроется главное окно интегрированной среды разработки Python Shell
![]() |
Окно Python Shell |
1.3. Теперь откроем окно для разработки программы на питоне File-New Window:
![]() |
Окно для разработки программы |
1.4. Наберем текст программы:
![]() |
Код первой программы |
Можно было бы ограничиться одной строкой print «Hello, World!» . Однако в этом примере показаны функции. Фунции начинаются со слова def . Здесь две фунции – одна выводит строчку Hello, World , а другая ждет ввода клавиши Enter для своего завершения.
Заметим, что название окна Untitled окружено звездочками *Untitled* .Это говорит о том, что программа в окне не записана в файл.
1.5. Перед выполнением программы сохраним ее в файл File — Save As…
![]() |
Сохранение Python – программы |
1.6. Запускаем на выполнение сохраненную программу Run — Run Module:
![]() |
Запуск Python –программы в IDLE |
1.7. В результате в окне Python Shell появятся результаты выполнения программы:
![]() |
Результат выполнения программы в окне Python Shell |
1.8. Нажмем клавишу Enter и программа закончится :
![]() |
Окончание выполнения программы в окне Python Shell |
Итак, мы написали и запустили программу в интегрированной среде разработки на языке Python (IDLE)
2. Запуск программы в консольном интерперетаре Питона
2.1. Запустим консольный интерпретатор Пиотона Пуск-Все программы — Python 2.7 — Python (command line):
![]() |
Вызов консольной среды Питона |
2.2. В результате откроется окно консольной среды разработки Python:
![]() |
Консольный интерпретатор Питона |
2.3 .Запустим и выполним созданную программу Hello.py .Наберем execfile(«f:pythonhellohello.py») и выполним :
![]() |
Выполнение программы в консольном интерпретаторе Питона |
В случае , если программа в другом каталоге , то вместо «f:pythonhellohello.py» — свой путь.
3. Очистка экранов интерпретаторов Pytona ( IDLE и Command line)
3.1. Для очистки консольного экрана интерпретатора Python необходимо набрать следующую последовательность:
import os
os.system(«cls»)
В результате экран очистится:
![]() |
Очистка консольного экрана интерпретатора Питона |
3.2. Для интегрированной среды разработки на языке Python (IDLE) можно предложить следующий метод. Когда открыто хотя бы одно окно для разработки программы,надо закрыть окно Python Shell File-Close:
![]() |
Закрытие окна Python Shell |
Затем открыть в окне для разработки программы — Run — Python Shell :
![]() |
Run — Python Shell |
4. Скачать программу Hello.py и некоторые скрины поста : Hello-World-py.rar
Источник: konspect.blogspot.com