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

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 и как с ними работать. Надеюсь, что статья была для вас полезной. Удачи!

Посмотрите на следующий список номеров:

dlist = [23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4, 23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4]

Теперь я пытаюсь найти номера индексов всех чисел в списке, которые выше 25. Затем я хочу составить список этих индексных чисел.

for i in dlist:
    if i >= 25:
        checklist.append(list_degrees.index(i))

Теперь проблема состоит в том, что он регистрирует некоторые номера индексов дважды. Например: мы видим первое число выше 25: 28.6. Это число имеет номер индекса 1. Если мы посмотрим дальше, мы снова увидим 28.6, это должно иметь индекс номер 14. Вместо этого он снова получил номер индекса 1.

Здесь вы видите мой «неправильный» вывод:

[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

Кто-нибудь ответит на мою проблему? Заранее спасибо!

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

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

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

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

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