Как проверить является ли символ числом python
Перейти к содержимому

Как проверить является ли символ числом python

  • автор:

Проверить является ли строка числом в Python

К сожалению функция isdigit не работает для чисел с плавающей точкой и для отрицательных чисел. Так что для такой проверки можно использовать следующую функцию, которая представляет собой комбинацию из проверки isdigit и обычного конвертирования во float:

def is_digit(string): 
if string.isdigit():
return True
else:
try: float(string) return True except ValueError: return False
>>>print(is_digit('neer'))
False

>>>print(is_digit('neer306'))
False

>>>print(is_digit('306'))
True

>>>print(is_digit('0.05'))
True

>>>print(is_digit('0.05abc'))
False

Python: проверка, является ли переменная числом

В этой статье мы рассмотрим несколько примеров того, как проверить, является ли переменная числом в Python.

Python имеет динамическую типизацию. Нет необходимости объявлять тип переменной во время ее создания — интерпретатор определяет тип во время выполнения:

variable = 4 another_variable = 'hello' 

Кроме того, переменную можно переназначить новому типу в любой момент:

# Присвойте числовое значение variable = 4 # Переназначить строковое значение variable = 'four' 

Этот подход, имея преимущества, также знакомит нас с несколькими проблемами. А именно, когда мы получаем переменную, мы обычно не знаем, какого она типа. Если мы ожидаем число, но получаем неопределенный variable , мы захотим проверить, является ли он числом, прежде чем выполнять какие-то действия.

Использование функции type()

В Python функция type() возвращает тип аргумента:

myNumber = 1 print(type(myNumber)) myFloat = 1.0 print(type(myFloat)) myString = 's' print(type(myString)) 

Таким образом, способ проверки типа:

myVariable = input('Enter a number') if type(myVariable) == int or type(myVariable) == float: # Do something else: print('The variable is not a number') 

Здесь мы проверяем, является ли тип переменной, введенной пользователем, int или float , продолжая выполнение программы, если это так. В противном случае мы уведомляем пользователя, что он ввел переменную, отличную от Number. Помните, что если вы сравниваете несколько типов, например int или float , вам придется использовать эту type() функцию оба раза.

Если бы мы просто сказали if type(var) == int or float , что вроде бы нормально, возникла бы проблема:

myVariable = 'A string' if type(myVariable) == int or float: print('The variable a number') else: print('The variable is not a number') 

Это, независимо от ввода, возвращает:

The variable is a number 

Это потому, что Python проверяет значения истинности утверждений. Переменные в Python могут быть оценены как True за исключением False , None , 0 и пустых [] , <> , set() , () , » или «» .

Следовательно, когда мы пишем or float в нашем условии, это эквивалентно записи or True , которая всегда будет возвращать True .

numbers.Number

Хороший способ проверить, является ли переменная числом — это модуль numbers . Вы можете проверить, является ли переменная экземпляром класса Number , с помощью функции isinstance() :

import numbers variable = 5 print(isinstance(5, numbers.Number))
True

Примечание. Этот подход может неожиданно работать с числовыми типами вне ядра Python. Некоторые фреймворки могут иметь нечисловую реализацию Number , и в этом случае этот подход вернет ложный результат False .

Использование блока try-except

Другой способ проверить, является ли переменная числом — использовать блок try-except. В блоке try мы преобразуем данную переменную в int или float . Успешное выполнение блока try означает, что переменная является числом, то есть либо int , либо float :

myVariable = 1 try: tmp = int(myVariable) print('The variable a number') except: print('The variable is not a number')

Это работает как для int, так и для float, потому что вы можете привести int к float и float к int.

Если вы специально хотите только проверить, является ли переменная одной из них, вам следует использовать функцию type() .

String.isnumeric()

В Python isnumeric() — это встроенный метод, используемый для обработки строк. Методы issnumeric() возвращают «True», если все символы в строке являются числовыми символами. В противном случае он возвращает «False».
Эта функция используется для проверки, содержит ли аргумент все числовые символы, такие как: целые числа, дроби, нижний индекс, верхний индекс, римские цифры и т.д. (Все написано в юникоде)

string = '123ayu456' print(string.isnumeric()) string = '123456' print( string.isnumeric()) 
False True 
String.isdigit()

Метод isdigit() возвращает истину, если все символы являются цифрами, в противном случае значение False.

Показатели, такие как ², также считаются цифрами.

print("\u0030".isdigit()) # unicode for 0 print("\u00B2".isdigit()) # unicode for ² 
True True

Как проверить является ли символ числом python

Выведите все символы ASCII с кодами от 33 до 126 и их коды в следующем виде:

! 33 " 34 # 35 . > 125 ~ 126

B: От омеги до коппы

Напишите программу, которые выводит исторические кириллические символы, начиная с омеги и заканчивая коппой.

Программа должна вывести заглавные буквы, их коды — чётные числа от 1120 до 1152, разделяя символы пробелом.

Ѡ Ѣ Ѥ Ѧ Ѩ Ѫ Ѭ Ѯ Ѱ Ѳ Ѵ Ѷ Ѹ Ѻ Ѽ Ѿ Ҁ

С: Следующий символ

Дан один символ. Выведите следующий за ним символ в таблице ASCII.

D: Символы в заданном интервале

Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.

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

ABCD
0123456789

E: isdigit

Для данного символа проверьте, является ли он цифрой.

Решение оформите в виде функции isdigit(c: str) -> bool .

На проверку сдайте только тело функции.

В решении нельзя использовать циклы условную инструкцию. В решении нельзя использовать константы с неочевидным значением типа 48 или 57. Да и функция ord тоже не нужна.

isdigit('0')
True
isdigit('A')
False

Для тех, кто решил эту задачу. У строк в языке Python есть метод isdigit() , то есть использовать его нужно так: s.isdigit() . Если длина строки больше 1, то метод возвращает True , если все символы строки являются цифрами.

Помимо этого есть методы isalpha , isupper , islower , проверяющие, является ли символ буквой, заглавной буквой, строчной буквой. Об этих и других методах можно прочитать в документации.

F: upper

Напишите функцию upper(c: str) -> str , которая переводит символ в верхний регистр, то есть для строчной буквы латинского алфавита возвращает сооветствующую заглавную букву латинского алфавита, а для остальных символов возвращает тот же символ.

На проверку сдайте только тело функции.

upper('f')
upper('F')
upper('4')

G: lower

Напишите функцию lower(s: str) -> str , которая переводит все символы данной строки в нижний регистр.

На проверку сдайте только тело функции.

lower('Hello, world!')
'hello, world!'

Для тех, кто решил эту задачу. У строк в языке Python есть методы upper() и lower() , аналогичные данным. Об этих и других методах можно прочитать в документации.

H: Палиндром

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

Решение оформите в виде функции is_palindrome(s: str) -> bool , возвращающей значение типа bool .

is_palindrome('Radar')
True
is_palindrome('True')
False

I: Значение выражения — 1

Дана непустая строка, состоящая из \(n\) цифр (т.е. однозначных чисел), между которыми стоит \(n-1\) знак операции, каждый из которых может быть либо +, либо -. Вычислите значение данного выражения.

Решение оформите в виде функции evaluate(s: str) -> int , получающей в качестве аргумента строку и возвращающую ее значение.

На проверку сдайте только тело функции. Решение должно иметь сложность \(O(n)\), где \(n\) — длина строки.

evaluate('1+2-3')

J: Значение выражения — 2

Дано выражение одно из следующих видов: \(A+B\), \(A-B\) или \(A\ast B\), где \(A\) и \(B\) — целые неотрицательные числа. Определите значение этого выражения.

Решение оформите в виде функции evaluate(s: str) -> int , получающей в качестве аргумента строку и возвращающую ее значение.

На проверку сдайте только тело функции.

evaluate('2*2')
evaluate('100-101')

K: Количество слов

Дана строка, возможно, содержащая пробелы. Определите количество слов в этой строке. Слово — это несколько подряд идущих букв латинского алфавита (как заглавных, так и строчных).

Решение оформите в виде функции count_words(s: str) -> int , возвращающее значение типа int .

На проверку сдайте только тело функции.

count_words('Yesterday, all my troubles seemed so far away')

L: Самое длинное слово

Дана строка. Найдите в этой строке самое длинное слово и выведите его. Если в строке несколько слов одинаковой максимальной длины, выведите первое из них. Решение оформите в виде функции longest_word(s: str) -> str , возвращающей значение типа str . Если в строке нет ни одной буквы, функция возвращает пустую строку.

На проверку сдайте только тело функции.

longest_word('In a hole in the ground there lived a hobbit.')
'ground'

M: Слова с прописной буквы

Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы — строчными.

Решение оформите в виде функции capitalize(s: str) -> str .

На проверку сдайте только тело функции.

capitalize('In a hole in the ground there lived a hobbit.')
'In A Hole In The Ground There Lived A Hobbit.'

N: Максимальная буква

Дана строка. Определите максимальную букву, которая встречается в этой строке, при этом заглавные и строчные буквы нужно считать одинаковыми. Под буквой подразумеваются как русские, так и английские буквы, строка может содержать русские и английские буквы.

При решении задачи вам понадобятся методы строк, упомянутые раньше:

s.isalpha() — возвращает True или False , в зависимости от того, является ли символ буквой (все символы строки, если их несколько).

s.upper() — возвращает значение строки, переведённой в верхний регистр.

s.lower() — возвращает значение строки, переведённой в нижний регистр.

Решение оформите в виде функции max_char(s: str) -> str . Функция должна возвращать максимальную букву в верхнем регистре.

Если в данной строке нет символов, являющихся буквами, функция возвращает пустую строку.

На проверку сдайте только тело функции.

max_char('Встретив двусмысленность, отбрось искушение угадать.')

O: Частота появления букв

Дана программа, которая может содержать ASCII-символы и русские буквы. Посчитайте, сколько раз в этой строке встречается каждый возможный символ. Выведите все встречающиеся в этой строке символы в порядке возрастания их кодов, а затем количество вхождений этого символа. Пробелы при этом игнорируйте (считаются только символы, чьи коды больше 32).

Задача должна решаться за однократный проход по данной строке. Для этого создайте список count , в котором значение count[i] будет равно количеству вхождений символа chr(i) в данную строку.

Максимальный код символа русского алфавита равен 1105 (для буквы «ё»).

Встретив двусмысленность, отбрось искушение угадать.
, 1 . 1 В 1 а 2 б 1 в 2 г 1 д 2 е 4 и 3 к 1 л 1 м 1 н 3 о 3 р 2 с 6 т 5 у 3 ш 1 ы 1 ь 3

P: Самая частая буква

Дана строка содержащая буквы русского и латинского алфавитов и иные символы. Определите, какая буква (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются. Буква «Ё» в тексте не встречается. Заглавные и строчные буквы считаются одинаковыми.

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

При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход.

Beautiful is better than ugly. Красивое лучше, чем уродливое.

Q: Анаграммы

Даны две строки. Определите, можно ли получить одну из другой перестановкой символов.

Программа получает на вход две строки, содержащие только ASCII-символы, не содержащие пробелы.

Программа должна вывести слово YES , если одна строка может быть получена из другой перестановкой букв или NO .

Заглавные и строчные буквы в этой задаче считаются различными.

eleven_plus_two
twelve_plus_one
Eleven_plus_two
Twelve_plus_one

R: Пробелы после запятой

После запятой в тексте должен строять пробел. Дана строка, вставкой пробелов в неё добейтесь выполнения этого правила. Не надо вставлять пробел, если он там уже есть.

Question of Life,The Universe, and Everything
Question of Life, The Universe, and Everything

S: Шифр Цезаря

В шифре Цезаря каждый символ заменяется на другой символ, третий по счету в алфавите после данного, с цикличность. То есть символ A заменяется на D, символ B — на E, символ C — на F, . символ Z на C.

Дана строка, зашифруйте ее при помощи шифра Цезаря. Решение оформите в виде функции caesar_cipher(s: str, k: int) -> str , возвращающей новую строку. s — исходная строка, k — величина сдвига. Величина сдвига может быть произвольным целым числом, в том числе и отрицательным.

В тексте могут быть только заглавные английские буквы и символы ASCII, не являющиеся буквами.

caesar_cipher('IN A HOLE IN THE GROUND THERE LIVED A HOBBIT.', 3)
'LQ D KROH LQ WKH JURXQG WKHUH OLYHG D KREELW.'

T: Шифр замены — зашифровать сообщение

Шифр замены обобщение шифра Цезаря. Каждая буква сообщения меняется на какую-то другую букву (разные буквы меняются на разные буквы). Символы, не являющиеся буквами, остаются такими же. Ключом шифрования является перестановка: указание того, на какую букву должна быть заменена каждая другая буква.

Вам дана строка, содержащая только заглавные латинские буквы и символы ASCII, не являющиеся буквами. Зашифруйте её при помощи шифра замены.

Решение оформите в виде функции substitution_cipher(msg: str, key: str) -> str , возвращающей новую строку с зашифрованным сообщением. msg — исходное сообщение, key — ключ шифрования.

Ключ шифрования представляет собой строку длиной 26, являющейся перестановкой символов от A до Z. В строке последовательно записаны буквы, в которые переходят буквы A, B, C, . Z исходного сообщения.

substitution_cipher('IN A HOLE IN THE GROUND THERE LIVED A HOBBIT.', 'ABCDIFGHEJKLMNUPQRSTOVWXYZ')
'EN A HULI EN THI GRUOND THIRI LEVID A HUBBET.'

U: Шифр замены — расшифровать сообщение

Расшифруйте сообщение, зашифрованное шифром замены.

Решение оформите в виде функции substitution_decipher(msg: str, key: str) -> str , возвращающей новую строку с расшифрованным сообщением. msg — зашифрованное сообщение, key — ключ шифрования, заданный как в предыдущей задаче.

substitution_decipher('EN A HULI EN THI GRUOND THIRI LEVID A HUBBET.', 'ABCDIFGHEJKLMNUPQRSTOVWXYZ')
'IN A HOLE IN THE GROUND THERE LIVED A HOBBIT.'

V: Значение выражения — 3

Дана строка, содержащая одно или более целых неотрицательных чисел, разделенных знаками “+” или “-”. Вычислите значение этого выражения.

Решение оформите в виде функции evaluate(s) .

На проверку сдайте только тело функции.

evaluate('21+7-10')

W: 12-часовой формат времени

Во многих англоговорящих странах время записывается в 12-часовом формате с указанием одного из двух 12-часовых интервалов: до полудня (a.m.) или после полудня (p.m.). Формально запись времени в 12-часовом формате выглядит, как строка “h:mm x.m.”, где h — число часов от 1 до 12 (однозначное или двухзначное), mm — число минут от 00 до 59, дополненное нулями до двух разрядов, x — одна из двух букв “a” или “p”. Подробней примеры записи времени и их перевод в 24-часовой формат можно найти в википедии.

Дана строка с записью некоторого времени в 12-часовом формате. Выведите его в 24-часовом формате “hh:mm” (hh — количество часов от 00 до 23, дополненное нулями до двух разрядов, mm — количество минут от 00 до 59, дополненное нулями до двух разрядов).

1:00 a.m.
01:00
12:34 p.m.
12:34

X: IP-адрес

В сети интернет каждому компьютеру присваивается четырехбайтовый код, который принято записывать в виде четырех чисел, каждое из которых может принимать значения от 0 до 255, разделенных точками. Вот примеры правильных IP-адресов:

127.0.0.0 192.168.0.1 255.0.255.255

Программа получает на вход строку из произвольных символов. Если эта строка является корректной записью IP-адреса, выведите YES , иначе выведите NO .

127.0.0.1

Y: Детская задача

Хорошо известна задача-шутка, в которой требуется продолжить числовую последовательность:

1 11 21 1211 111221 312211 13112221 1113213211 .

Свойства данного ряда изучались математиками, а сама последовательность названа look-and-say sequence.

Напишите программу, которая по данному числу \(k\le 25\) выводит \(k\)-е число в этой последовательности.

1211

Z: Шифр перестановки

В шифре перестановки меняется порядок следования букв, но сами буквы не меняются. При шифровании сообщение разбивается на блоки длины \(n\), символы внутри блока переставляются в соответствии с ключом. Ключ — это перестановка длины \(n\).

Дано сообщение и ключ шифрования, зашифруйте сообщение при помощи данного ключа.

Длина ключа может быть строкой длиной \(n\) (\(1 \le n \le 9\)), состоящей из неповторяющихся цифр от 1 до \(n\). Перестановка показывает, на какие позиции переходят символы блока с номерами 1, 2, . \(n\). То есть перестановка вида 51234 означает, что блок длины 5 циклически сдвигается вправо на 1 символ.

При шифровании сообщение разбивается на блоки длины \(n\), если длина сообщения некратна \(n\), то в конец сообщения дописываются точки.

Решение оформите в виде функции transposition_cipher(msg: str, key: str) -> str , где msg — исходное сообщение, key — ключ шифрования.

transposition_cipher('IN A HOLE IN THE GROUND THERE LIVED A HOBBIT', '312')
' INHA EOLN IH TGE URO NDETH REVLI EDHA BOB.IT'

YES , если слово является палиндромом и словов NO , если не является.

Решение оформите в виде функции IsPalindrome (S) . Длина входной строки может быть до \(10^6\) символов. При решении этой задачи нельзя пользоваться дополнительными строками и списками, модифицировать исходную строку.

Was it a rat I saw?
abca

X: Форматирование текста

  1. В начале и конце строки не должно быть пробелов.
  2. Все слова разделяются ровно одним пробелом.
  3. Точки и запятые пишутся слитно с предыдущим словом, после знака препинания ставится пробел.

Выведите полученную строку, добавив в конец символ “#”.

Hello , world .
Hello, world.#

Y: Календарь

Напечатайте календарь на месяц. Месяц может состоять из 28, 29, 30, 31 дня. Календарь на месяц состоит из 4, 5 или 6 столбцов, заполненных числами (датами). Ширина каждого столбца — два символа, между столбцами промежуток в один символ. Однозначные числа дополняются пробелом слева. Промежуток между столбцами — один пробел. В каждом столбце должно быть записано хотя бы одно число.

Программа получает на вход два числа — количество дней в месяце (от 28 до 31) и день недели, на которое приходится первое число месяца (от 1 до 7) и должна вывести календарь на указанный месяц.

31 3
6 13 20 27 
7 14 21 28
1 8 15 22 29
2 9 16 23 30
3 10 17 24 31
4 11 18 25
5 12 19 26

Z: Значение выражения — 4

Строка состоит из целых неотрицательных чисел, разделенных знаками операций “+”, “-” и “*”. Вычислите значение этого выражения выполняя действия по правилам арифметики.

Тесты к этой задаче закрытые.

Python — как проверить является ли введенный текст числом?

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

Итак, типовая задача: получаем от пользователя строку, и хотим проверить — является ли введенный текст числом. Можно использовать сложный способ, а можно — простой. Сложный способ выглядит следующим образом: пытаемся сконвертировать введенную строку в число с плавающей запятой. После этого проверяем — если получилось, то строка — число, а если получаем ошибку, то увы — строка не число. В виде кода выглядит это все следующим образом:

number = input('Введите: ') print('Исходное:', number) try: number = float(number) print('Это число') except: print('Это не число!')

Т.е. используем метод обработки исключений(ошибок) try-except (я писал об этом вот тут).

Можно использовать простой метод �� Для этого в Python имеется метод isdigit(), который возвращает True в случае, если строка состоит из цифр (в строке должен иметься минимум один символ), и возвращает False в случае, если строка не содержит цифр.
В виде кода это выглядит следующим образом:

number = input('Введите: ') print('Исходное:', number) print(number.isdigit())

Как видите — все просто �� Как всегда — в случае возникновения вопросов пишите на почту, или в Телеграм.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *