Как найти порядковый номер числа в питоне

Why not just use .index()?

In [1]: l = [ a, b, [c,d], e, f]
In [2]: l.index([c,d])
Out[2]: 2
In [4]: l.index(e)
Out[4]: 3

If you really need a recursive function, use the following:

def order(item, l, n=0):
    if l:
        if l[0] == item:
            return n
        elif len(l) >= 2: # for python 2, use "else:"
            return order(item, l[1:], n+1)

And if recursion is not a must but you can’t use .index(), use a for loop:

def order(item, l):
    for i,v in enumrate(l):
        if v == item:
            return i

With both methods, just call order([c,d], lst)

нужно найти порядковый номер цифры в числе.

q = 123421434  #для примера
k=int(input())
print(int(q[k]))

После этого команда больше не работает,и все действия, происходящие после не учитываются. Хотелось бы узнать, почему так. Заранее благодарю

задан 24 окт 2020 в 11:30

Povelitel_Zmei's user avatar

потому что у вас q это число, а к числу мы не можем обращаться по индексу. Чтобы обратится по индексу его надо перевести в строку

q = "123421434"
k=int(input())
print(int(q[k]))

ответ дан 24 окт 2020 в 11:36

Danis's user avatar

DanisDanis

19.1k5 золотых знаков20 серебряных знаков55 бронзовых знаков

1

Встроенные функции

Язык Python включает много уже определенных, то есть встроенных в него, функций. Программист не видит их определений, они скрыты где-то в «недрах» языка. Достаточно знать, что эти функции принимают и что возвращают, то есть их интерфейс.

Ряд встроенных функций, касающихся ввода-вывода и типов данных, мы уже использовали. Это print(), input(), int(), float(), str(), bool(), type(). Перечень всех встроенных в Python функций можно найти в официальной документации по языку: https://docs.python.org/3/library/functions.html .

В этом уроке рассмотрим следующие встроенные функции, условно разбив их на группы:

  • функции для работы с символами – ord(), chr(), len()

  • математические функции – abs(), round(), divmod(), pow(), max(), min(), sum()

Функция ord() позволяет получить номер символа по таблице Unicode. Соответственно, принимает она в качестве аргумента одиночный символ, заключенный в кавычки:

>>> ord('z')
122
>>> ord('ф')
1092
>>> ord('@')
64

Функция chr() выполняет обратное действие. Она позволяет получить символ по его номеру:

>>> chr(87)
'W'
>>> chr(1049)
'Й'
>>> chr(10045)
'✽'

Чтобы не путать ord() и chr(), помните, что функция – это действие. Ее имя как бы отвечает на вопрос «Что сделать?». Order – это порядок. Значит, мы хотим получить порядковый номер элемента в ряду. А чтобы получить номер, должны передать символ. Character – это символ. Значит, мы хотим получить символ. Поэтому должны передать порядковый номер.

Функция len() в качестве аргумента принимает объект, который состоит из более простых объектов, количество которых она подсчитывает. Числа – это простые объекты, их нельзя передавать в len(). Строки можно:

>>> len('abc')
3
>>> s1 = '------'
>>> s2 = '_______'
>>> len(s1) > len(s2)
False
>>> len(s1)
6
>>> len(s2)
7

Кроме строк в len() можно передавать другие, еще не изученные нами, структуры данных.

Функция abs() возвращает абсолютное значение числа:

>>> abs(-2.2)
2.2
>>> abs(9)
9

Если требуется округлить вещественное число до определенного знака после запятой, то следует воспользоваться функцией round():

>>> a = 10/3
>>> a
3.3333333333333335
>>> round(a, 2)
3.33
>>> round(a)
3

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

>>> round(5321, -1)
5320
>>> round(5321, -3)
5000
>>> round(5321, -4)
10000

Функция именно округляет согласно правилу округления из математики, а не отбрасывает. Поэтому 5 тысяч неожиданно округляются до десяти.

>>> round(3.76, 1)
3.8
>>> round(3.72, 1)
3.7
>>> round(3.72)
4
>>> round(3.22)
3

Если нужно просто избавиться от дробной части без округления, следует воспользоваться функцией int():

Нередко функцию round() используют совместно с функцией print(), избегая форматирования вывода:

>>> a = 3.45673
>>> print("Number: %.2f" % a)
Number: 3.46
>>> print("Number:", round(a, 2))
Number: 3.46

В последнем случае код выглядит более ясным.

Функция divmod() выполняет одновременно деление нацело и нахождение остатка от деления:

>>> divmod(10, 3)
(3, 1)
>>> divmod(20, 7)
(2, 6)

Возвращает она кортеж. В некоторых других языках встречаются две отдельные функции: div() и mod(). Первая делит нацело, вторая находит остаток от целочисленного деления (деления по модулю). В Python и многих других языках для этого используются специальные символы-операнды:

>>> 10 // 3
3
>>> 10 % 3
1

Функция pow() возводит в степень. Первое число – основание, второе – показатель:

>>> pow(3, 2)
9
>>> pow(2, 4)
16

То же самое можно проделать так:

Однако pow() может принимать третий необязательный аргумент. Это число, на которое делится по модулю результат возведения в степень:

>>> pow(2, 4, 4)
0
>>> 2**4 % 4
0

Преимуществом первого способа является его более быстрое выполнение.

Функции max(), min() и sum() находят соответственно максимальный, минимальный элемент и сумму элементов аргумента:

>>> max(10, 12, 3)
12
>>> min(10, 12, 3, 9)
3
>>> a = (10, 12, 3, 10)
>>> sum(a)
35

В sum() нельзя передать перечень элементов, должна быть структура данных, например, кортеж. В min() и max() также чаще передают один так называемый итерируемый объект:

Практическая работа

  1. Напишите программу, которая циклично запрашивает у пользователя номера символов по таблице Unicode и выводит соответствующие им символы. Завершает работу при вводе нуля.

  2. Напишите программу, которая измеряет длину введенной строки. Если строка длиннее десяти символов, то выносится предупреждение. Если короче, то к строке добавляется столько символов *, чтобы ее длина составляла десять символов, после чего новая строка должна выводиться на экран.

  3. Напишите программу, которая запрашивает у пользователя шесть вещественных чисел. На экран выводит минимальное и максимальное из них, округленные до двух знаков после запятой. Выполните задание без использования встроенных функций min() и max().

Примеры решения и дополнительные уроки в pdf-версии

курса

Списки в Python – упорядоченный изменяемый набор объектов произвольных типов, пронумерованных от 0. Они используются для хранения и работы с данными.

Список можно задать так:

Num = [9, 8, 7, 6, 5, 4, 3, 2, 1]

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

Num = [9, 8, 7, 6, 5, 4, 3, 2, 1]

print(Num[0]) ##Выведет 9

print(Num[3]) ##Выведет 6

print(Num[8]) ##Выведет 1

Также можно вывести тот или иной элемент списка с помощью его индекса с конца счета:

Num = [9, 8, 7, 6, 5, 4, 3, 2, 1]

print(Num[-1]) ##Выведет 1

print(Num[-3]) ##Выведет 3

print(Num[-7]) ##Выведет 7

Можно вывести и весь массив с помощью того же метода print:

Num = [9, 8, 7, 6, 5, 4, 3, 2, 1]

print(Num) ##Выведет [9, 8, 7, 6, 5, 4, 3, 2, 1]

Списки можно создавать с помощью генераторов списков. Такой способ схож с использованием цикла for, но этот гораздо компактнее в исполнении:

GenList = [ for GenList in ‘hello world’]

print(GenList) ##Выведет ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

Рассмотрим конкатенацию списков (добавление одного списка в конец другого):

a = ['a', 'b']

b = [1, 2]

c = a+b

print(c) ##Выведет ['a', 'b', 1, 2]

Сами списки можно умножать на любые числа:

a = [1, 2]

a = a*2

print(a) ##Выведет [1, 2, 1, 2]

Методы работы со списками

list.append(x) – добавляет элемент x в конец списка. Пример:

a = [1, 2]

a.append(1)

print(a) ##Выведет [1, 2, 1]

list.extend(x) – делает то же самое, что и операция с суммой списков, то есть добавляет в конец списка list элементы списка x. Пример:

a = [1, 2]

a.extend(a)

print(a) ##Выведет [1, 2, 1, 2]

list.insert(y, x) – вставляет элемент x в список list порядковым номером y. Пример:

a = [1, 2]

a.insert(0, 2)

print(a) ##Выведет [2, 1, 2]

list.remove(x) – удаляет первый элемент в списке list, который равен значению x. Пример: 

a = [1, 2, 1]

a.remove(1)

print(a) ##Выведет [2, 1]

list.pop(y) – удаляет элемент списка list по порядковому номеру y. Если порядковый номер не задан, то удаляется последний элемент списка. Пример:

a = [1, 2, 1]

a.pop(0)

print(a) ##Выведет: [2, 1]

list.index(g, x, y) – возвращает порядковый номер первого элемента со значением g в списке list в диапазоне от x до y (диапазон можно не указывать, при этом поиск будет вестись по всему списку). Пример:

a = [1, 2, 1, 3]

b = a.index(1, 1, 3)

print(b) ##Выведет 2

list.count(x) – возвращает количество элементов со значением x в списке list. Пример:

a = [1, 2, 1, 3]

b = a.count(1)

print(b) ##Выведет 2

list.sort() – сортировка списка. По умолчанию сортировка идет по возрастанию. Также в виде параметра в метод можно передать функцию сортировки. Пример: 

a = [2, 1, 3]

a.sort()

print(a) ##Выведет [1, 2, 3]

list.reverse() – переворачивает (реверсирует список). Пример:

a = [2, 1, 3]

a.reverse()

print(a) ##Выведет [3, 1, 2]

list.copy() – копирует список. Пример:

a = [2, 1, 3]

newList = a.copy()

a = a*2

print(newList) ##Выведет [2, 1, 3]

print(a) ##Выведет [2, 1, 3, 2, 1, 3]

list.clear() – очищает список. Пример:

a = [2, 1, 3]

a.clear()

print(a) ##Выведет []

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Итог

Мы узнали, что такое списки в Python и как с ними работать. Надеюсь, что статья была для вас полезной. Удачи!

nikki4

22 / 16 / 7

Регистрация: 20.07.2010

Сообщений: 264

1

Как правильно узнать порядковый номер элемента в списке?

17.05.2020, 19:58. Показов 40461. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Сделал так, но подозреваю, что так не оптимально и лучше по другому.

Python
1
2
3
4
5
6
site = 'sezonmebeli.ru'
sites= ['Яндекс.Маркет', 'orel.regmarkets.ru', 'bestmebelik.ru', 'orel.goodster.ru', 'Ezakaz.ru', 'orel.yamart.ru', 'sezonmebeli.ru', 'onlinetrade.ru', 'm-lion.ru', 'mebelsort.ru', 'yavitrina.ru', 'qupi-stol.ru', '13chairs.ru', 'orel.lifemebel.ru', 'meb-mig.ru', 'LogoMebel.ru', 'mebelion.ru', 'rossiya.m-lion.ru']
 
for link in enumerate(sites):
    if site in link:
        print(link[0])



0



iSmokeJC

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

16114 / 9000 / 2605

Регистрация: 21.10.2017

Сообщений: 20,702

17.05.2020, 20:06

2

nikki4, тогда уж

Python
1
2
3
for index, link in enumerate(sites):
    if site == link:
        print(index)



1



22 / 16 / 7

Регистрация: 20.07.2010

Сообщений: 264

17.05.2020, 20:08

 [ТС]

3

спасибо, но я имел ввиду как-нибудь так нельзя?
print(site.position in sites)

наверняка же должна быть функция. но не нашел. а у меня аж 3 строчки кода с циклом. как-то заморочено



0



4611 / 3148 / 1112

Регистрация: 21.03.2016

Сообщений: 7,838

17.05.2020, 20:12

4

list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)



0



iSmokeJC

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

16114 / 9000 / 2605

Регистрация: 21.10.2017

Сообщений: 20,702

17.05.2020, 20:13

5

Лучший ответ Сообщение было отмечено nikki4 как решение

Решение

Python
1
2
if site in sites:
    print(sites.index(site))



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

17.05.2020, 20:13

5

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • У меня есть отрывок как найти полную
  • Как найти название фигуры
  • Как найти на странице избранное
  • Как найти площадь квадрата по клеточкам
  • Высота сосуда как найти

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии