Как определить двузначное число в питоне
Особый класс операций представляют поразрядные операции. Они выполняются над отдельными разрядами чисел типа int. Но чтобы понять природу поразрядных операций, надо понимать что вообще представляет число в двоичном представление.
Двоичное представление чисел
При двоичной системе каждый разряд числа может иметь только два значения — 0 и 1. Например, 0 в десятичной системе также будет равен 0 в двоичной системе, а 1 в десятичной системе будет соответствовать 1 в двоичной системе. Следующее число в десятичной системе — 2 в двоичной системе будет соответствовать 10. То есть, когда мы к 1 прибавляем 1, то результатом будет 10. И так далее.
Например, 5 в двоичном представлении 101 и имеет три разряда. Для вывода десятичного числа в двоичной системе можно применять спецификатор 0b :
number = 5 # в двоичной форме 101 print(f"number = ") # number = 101
Без указания спецификатора функция print() выводит число в десятичной системе.
При этом Python позволяет сразу определять число в двоичной форме. Для этого число в двоичной форме указывается после префикса 0b :
number = 0b101 # определяем число в двоичной форме print(f"number = ") # number = 101 print(f"number = ") # number = 5 - в десятичной системе
Еще несколько примеров сопоставления между двоичной и десятичной системами:
number1 = 1 # в двоичной системе 0b1 number2 = 2 # в двоичной системе 0b10 number3 = 3 # в двоичной системе 0b11 number4 = 4 # в двоичной системе 0b100 number5 = 5 # в двоичной системе 0b101 number6 = 6 # в двоичной системе 0b110
Логические операции
Логические операции выполняются над отдельными разрядами числа. В Python есть следующие логические операции:
-
& (логическое умножение) Умножение производится поразрядно, и если у обоих операндов значения разрядов равно 1, то операция возвращает 1, иначе возвращается число 0. Например:
x1 = 2 # 010 y1 = 5 # 101 z1 = x1 & y1 print(f"z1 = ") # z1 = 0 x2 = 4 # 100 y2 = 5 # 101 z2 = x2 & y2 print(f"z2 = ") # z2 = 4 print(f"z2 = ") # z2 = 100
x1 = 2 # 010 y1 = 5 # 101 z1 = x1|y1 # 111 print(f"z1 = ") # z1 = 7 print(f"z1 = ") # z1 = 111 x2 = 4 # 100 y2 = 5 # 101 z2 = x2 | y2 # 101 print(f"z2 = ") # z2 = 5 print(f"z2 = ") # z2 = 101
x = 9 # 1001 y = 5 # 0101 z = x ^ y # 1100 print(f"z = ") # z = 12 print(f"z = ") # z = 1100
Здесь число 9 в двоичной форме равно 1001. Число 5 равно 0101. Операция XOR дает следующий результат: 1^0, 0^1, 0^0, 1^1. Здесь мы видим, что первые два разряда чисел содержат разные значения, поэтому первые два разряда получат значение 1. А последние два разряда чисел содержат одинаковые значения, поэтому последние два разряда получат значение 0. Таким образом, мы получаем число 1100 или 12 в десятичной системе. нередко данную операцию применяют для простого шифрования:
x = 45 # Значение, которое надо зашифровать - в двоичной форме 101101 key = 102 # Пусть это будет ключ - в двоичной форме 1100110 encrypt = x ^ key # Результатом будет число 1001011 или 75 print(f"Зашифрованное число: ") decrypt = encrypt ^ key # Результатом будет исходное число 45 print(f"Расшифрованное число: ")
Также можно применять эту операцию для обмена значений чисел:
x = 9 # 1001 y = 5 # 0101 x = x ^ y y = x ^ y x = x ^ y print(f"x = ") # x = 5 print(f"y = ") # y = 9
x = 5 y = ~x; print(f"y: ") # -6
Операции сдвига
Операции сдвига также производятся над разрядами чисел. Сдвиг может происходить вправо и влево.
Таким образом, если исходное число, которое надо сдвинуть в ту или другую строну, делится на два, то фактически получается умножение или деление на два. Поэтому подобную операцию можно использовать вместо непосредственного умножения или деления на два. Например:
a = 16 # в двоичной форме 10000 b = 2 c = a > b #Сдвиг числа 10000 вправо на 2 разряда, равно 100 или 4 в десятичной системе print(d) #4
При этом числа, которые участвую в операциях, необязательно должны быть кратны 2::
a = 22 # в двоичной форме 10110 b = 2 c = a > b # Сдвиг числа 10110 вправо на 2 разряда, равно 101 или 5 в десятичной системе print(d) # 5
Как найти количество двузначных чисел в питоне
Сформируйте матрицу чисел от 0 до 999, выведите её на экран. Подсчитыва1те количество содержащихся в нем двузначных чисел. Перед циклами, в которых заполняется матрица, необходимо ввести счетчик. По мере заполнения каждой ячейки матрицы следует проверять число. Если оно находится в диапазоне от 10 до 99, то вы должны увеличить счетчик на единицу.
Алгоритм решения задачи на python
1) Задать переменную, которая будет счётчиком
2) Создать цикл, который заполнит матрицу
3) Увеличивать счётчик на 1, когда в матрице будут появляться числа от 10 до 99
Код для нахождения количества двузначных чисел в матрице
from random import random
M = 7
N = 5
c = 0
a = []
for i in range(N):
b = []
for j in range(M):
n = int(random()*1000)
if 9 < n < 100:
c += 1
b.append(n)
a.append(b)
for i in a:
print(i)
print(«Количество двузначных чисел: %d» % c)

Python задачи
Все задачи на python
27 декабря 2022 г.
Комментарии могут оставлять только зарегестрированные пользователи!
Комментарии
Ваш комментарий будет первым !


1 2 3 4 5 6 7 8 9 10 11 12 13
M = [[232,54,65,1,45],[23,345,54,34,2],[234,35,433,455,34],[432,999,33,543,54],[22,345,511,23,3]] NewM = [] i = 0 while i len(M): k = 0 while k len(M[i]): if len(str(M[i][k])) == 2: NewM.append(len(str(M[i][k]))) k+=1 i+=1 Otvet = len(NewM) print (Otvet) Вывод: 12
Нужно посчитать сколько существует двузначных чисел, у которых сумма цифр равна сумме цифр при умножение на n (1 <=n<=10) Например :
(При умножении двузначных чисел на 2 не меняют сумму цифр такие числа: 18 27 36 45 54 63 72 81 90 99.)
Мне кажется, что вроде всё правильно написал, а программа работает неверно. При вводе n=2 должно выдавать: 10
n = int(input()) counter = 0 for i in range(1, 100): o = i // 10 d = i % 10 o_1 = (n * i) // 10 d_1 = (n * i) % 10 #36 72 if i * n < 100: if d + o == d_1 + o_1: counter += 1 else: s_1 = (n * i) // 10 % 10 #104 if d + o == d_1 + o_1 + s_1: counter += 1 print(counter)
Ссылка на задание
13.4k 1 золотой знак 8 серебряных знаков 23 бронзовых знака
задан 1 окт 2021 в 18:12
Я вижу 2 ошибки.
- Числа должны быть двузначные, а цикл у вас от 1 for i in range(1, 100) . Должен быть от 10.
- s_1 вы считаете неправильно. Т.к. программа попала в этот else блок, то для трехзначного числа у вас o_1 будет больше или равен 10. Тогда s_1 (совсем старшая цифра) должна считаться от o_1 как результат дальнейшего деления на 10. А o_1 (средняя цифра) — её нужно пересчитать как остаток от деления её же на 10.
s_1 = o_1 // 10 o_1 = o_1 % 10
Либо, если оставить вашу формулу для s_1 как есть, тогда она олицетворяет среднюю цифру, и o_1 надо высчитать для старшей:
o_1 = (n * i) // 10 // 10
ответ дан 1 окт 2021 в 18:29
13.4k 1 золотой знак 8 серебряных знаков 23 бронзовых знака
Не проще в отдельной функции сделать подсчет суммы то? Примерно так вот
def sumnum(i): sum=i%10 temp=i//10 while(temp): sum+=temp%10 temp=temp//10 return sum n = int(input()) counter = 0 for i in range(10, 100): if (sumnum(i)==sumnum(i*n)): print("%d %d %d"%(i,i*n,sumnum(i))) counter+=1 print(counter)
ответ дан 1 окт 2021 в 19:25
432 3 серебряных знака 7 бронзовых знаков
Можно так, дополнительно выводятся числа:
def sum_digits(number): res = 0 while number: res += number % 10 number //= 10 return res n = int(input()) nums = list(filter(lambda i: sum_digits(i) == sum_digits(i * n), range(10, 100))) print(nums) print(len(nums))
ответ дан 2 окт 2021 в 8:26
3,185 1 золотой знак 10 серебряных знаков 21 бронзовый знак
Перейти к содержанию
Количество двузначных чисел в матрице
Просмотров 1.5к. Обновлено 15 октября 2021
Сформировать матрицу из чисел от 0 до 999, вывести ее на экран. Посчитать количество двузначных чисел в ней.
Следует до циклов, в которых заполняется матрица, ввести счетчик двузначных чисел. При заполнении каждой ячейки матрицы, следует проверять число. Если оно лежит в диапазоне от 10 до 99, значит оно двузначное, и следует увеличить счетчик на единицу.
Pascal
количество двузначных чисел паскаль
const
M = 7;
N = 5;
var
a: array[1..N,1..M] of integer;
i, j, count: byte;
begin
randomize;
count := 0;
for i:=1 to N do begin
for j:=1 to M do begin
a[i,j] := random(1000);
write(a[i,j]:6);
if (a[i,j] > 9) and (a[i,j] < 100) then
count := count + 1
end;
writeln;
end;
writeln('Количество двузначных чисел: ', count)
end.
Пример(ы) выполнения программы на языке Pascal:481 356 456 213 842 82 959
59 661 52 729 932 915 663
178 224 751 362 36 121 977
473 466 470 31 288 356 147
941 138 436 971 891 616 465
Количество двузначных чисел: 5
Язык Си
сколько двузначных чисел Си
#include < stdio.h>
#define M 7
#define N 5
main() int a[N][M], i, j, count;
srand(time(NULL));
count = 0;
for (i=0; i < N; i++) for (j=0; j < M; j++) a[i][j] = rand() % 1000;
printf("%4d", a[i][j]);
if (a[i][j] > 9 && a[i][j] < 100)
count += 1;
>
printf("n");
>
printf("Количество двузначных чисел: %dn", count);
>
Python
определить двузначное число Python
from random import random
M = 7
N = 5
count = 0
a = []
for i in range(N):
b = []
for j in range(M):
n = int(random()*1000)
if 9 < n < 100:
count += 1
b.append(n)
a.append(b)for i in a:
print(i)
print("Количество двузначных чисел: %d" % count)
[234, 646, 862, 863, 324, 718, 465]
[148, 381, 57, 577, 982, 728, 112]
[530, 878, 951, 93, 410, 252, 332]
[161, 275, 180, 235, 19, 70, 881]
[321, 226, 500, 871, 318, 685, 958]
Количество двузначных чисел: 4
КуМир
алг двузначные числа
нач
цел M = 7, N = 5
цел таб a[1:N,1:M]
цел i, j, count=0
нц для i от 1 до N
нц для j от 1 до M
a[i,j] := int(rand(0,1000))
вывод a[i,j], " "
если a[i,j] > 9 и a[i,j] < 100 то
count := count + 1
все
кц
вывод нс
кц
вывод "Количество двузначных чисел: ", count
кон
Basic-256
M = 7
N = 5
dim a(N,M)
c = 0
for i=0 to N-1
for j=0 to M-1
a[i,j] = int(rand * 1000)
print a[i,j] + " ";
if a[i,j]>9 and a[i,j] c = c + 1
endif
next j
next i
print "Количество двузначных чисел: " + c
122 233 474 942 864 387 720
958 852 152 388 57 466 810
221 621 593 77 800 301 119
196 225 652 799 115 67 398
482 54 118 49 531 780 146
Количество двузначных чисел: 5
Перейти к содержанию
На чтение 1 мин Просмотров 3.6к. Опубликовано 26 октября, 2021 Обновлено 26 октября, 2021
Что нужно сделать
Вы участвуете в разработке приложения для математиков, где можно будет делать всё, начиная от простейших вычислений и заканчивая построением сложных графиков. В этом приложении реализована установка диапазона чисел, и вам необходимо написать этакую «защиту от дурака».
Напишите программу, которая получает на вход число и проверяет, двузначное оно или нет. Выведите соответствующее сообщение. Числа −42 и −99 тоже считаются двузначными. Сделайте это, используя не более одного оператора if-elsе. Не используйте elif.
Что оценивается
- результат вычислений корректен, поддерживаются отрицательные числа;
- задача решена без использования строк и операций с ними (конечно, это не относится к приведению целых чисел);
- input содержит корректное приглашение для ввода;
- переменные имеют значащие имена, не только a, b, c, d (видео 2.3);
- правильное употребление пробелов после запятых, при бинарных и логических операциях.
Решение:
num = int(input('Введите число: ')) if (num >= 10) and (num -100): print('Число двузначное') else: print('Число не двузначное')
( 8 оценок, среднее 4.5 из 5 )
Как проверить что число двузначное в python
Является ли сумма цифр заданного числа двухзначным числом
Является ли сумма цифр числа двухзначным числом / произведение цифр числа трехзначным числом
Дано трехзначное число. Определить: а) является ли сумма его цифр двухзначным числом; б) является.

Сумма двух первых цифр заданного четырехзначного числа равна сумме двух его последних цифр
Составить программы, печатающие значение True, если следующие указанные высказывания являются.
Проверить, является ли сумма цифр числа двухзначным числом
var a:integer; s:real; begin writeln(‘введите трехзначное число’); read(a); if a div 1000>=0.

Определить, является ли сумма цифр числа двухзначным числом
program pr1; uses crt; var a,b,c,m,p:integer; begin clrscr; textcolor(99);.
Условный оператор
Условный оператор или оператор ветвления — это оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения. Спасибо, Википедия! Такое определение можно найти в любой книге по программированию. Его крайне желательно хотя бы понимать.
Попробую дать более популярное определение: условный оператор выполняет некоторое действие, если указанное условие истинно (равно True).
Вот так выглядит if. else в Python
if True :
print ( ‘Условие истинно, поэтому я напечатаюсь’ )
Приведу пример поинтереснее:
a = 10
b = 5
if a > b:
print ( ‘a больше b равно True ‘ )
Если условие ложно, то код, находящийся под оператором if не выполнится:
a = 3
b = 9999999
if a > b:
print ( ‘Я никогда не напечатаюсь :(‘ )
Дополним предыдущий пример оператором else
a = 3
b = 9999999
if a > b:
print ( ‘Я никогда не напечатаюсь :(‘ )
else :
print ( ‘if не выполнился, так что печатаюсь я’ )
Если условие в if ложно, то выполнится оператор под оператором else
Приведу еще несколько примеров:
# Вывести большее из двух чисел,
# введенных с клавиатуры
a = int ( input ())
b = int ( input ())
if a > b:
print ( ‘Большее число a = ‘ + str (a))
else :
print ( ‘Большее число b = ‘ + str (b))
# Проверить число a на четность
a = int ( input ())
if a % 2 == 0 :
print ( ‘четное’ )
else :
print ( ‘нечетное’ )
Иногда двух вариантов недостаточно, для этого существует оператор elif, а для все остального есть.
age = int ( input ())
if age 10 :
print ( ‘Ваш возраст — это одна цифра :)’ )
el if age 15 :
print ( ‘Геометрия — это жестко (хочу обратно в началку)’ )
else :
print ( ‘В школе было круто’ )
В приведенном выше примере, есть три варианта развития событий, но это не значит, что мы ограничены в количестве дополнительных условий.
a = int ( input ( ‘Введите число от одного до 1 до 100 ‘ ))
if a 10 :
print ( ‘Ваше число меньше 10 ‘ )
el if a 20 :
print ( ‘Ваше число меньше двадцатки’ )
el if a 30 :
print ( ’30 — это потолок’ )
el if a 40 :
print ( ‘Ваше число меньше 40 ‘ )
el if a 50 :
print ( ‘Много, но не больше полтинника’ )
el if a 60 :
print ( ‘Число меньше, чем шесть*десять’ )
el if a 70 :
print ( ‘Ваше число расположено в восьмом десятке’ )
el if a 80 :
print ( ‘Ваше число меньше 80’ )
el if a 90 :
print ( ‘Ваше число находится в 9 десятке’ )
el if a 100 :
print ( ‘Сотня больше вашего числа’ )
else :
print ( ‘Хитро, но меня не обманешь, число слишком большое’ )
Да, мне нечем было заняться, ну и что? Никогда не делайте так, как написано в примере выше. Если в вашем коде больше трех elif значит что-то не так и стоит придумать новый алгоритм. Давайте еще разок: много elif — плохо!
Примеры решения задач
Проверить является ли клетка шахматной доски белой
# Два числа выбираются случайным образом (координаты клетки шахматного поля, от 1 до 8)
# Вывести YES, если клетка белая, и NO, если клетка черная
from random import randint
x = randint (1 ,8 )
y = randint (1 ,8 )
print (x, y)
if (x + y) % 2 == 1 :
print ( ‘YES’ )
else :
print ( ‘NO’ )
Во втором случаем числа вводятся с клавиатуры
x = int ( input ( ‘Введите координату x: ‘ ))
y = int ( input ( ‘Введите координату y: ‘ ))
if (x + y) % 2 == 1 :
print ( ‘YES’ )
else :
print ( ‘NO’ )
Проверить может ли слон ходить с первой шахматной на вторую
# Четыре числа выбираются случайным образом (координаты клетки шахматного поля, от 1 до 8)
# Вывести YES, если ладья может сходить с первой клетки на вторую, и NO, если не может
# Напомню, что ладья ходит так:
# Л ——X
# |
# |
# |
# X
from random import randint
x1 = randint (1 , 8 )
x2 = randint (1 , 8 )
y1 = randint (1 , 8 )
y2 = randint (1 , 8 )
print (x1, y1)
print (x2, y2)
if x1 == x2 and y1 != y2 or x1 != x2 and y1 == y2:
print ( ‘YES’ )
else :
print ( ‘NO’ )
То же самое, но с помощью ввода с клавиатуры
x1 = int ( input ( ‘Введите координату x1: ‘ ))
x2 = int ( input ( ‘Введите координату y1: ‘ ))
y1 = int ( input ( ‘Введите координату x2: ‘ ))
y2 = int ( input ( ‘Введите координату y2: ‘ ))
if x1 == x2 and y1 != y2 or x1 != x2 and y1 == y2:
print ( ‘YES’ )
else :
print ( ‘NO’ )
Решение задач
1. Пользователь вводит два целых числа. Выведите меньшее из них.
2. Пользователь вводит свое имя и возраст. Если возраст пользователя больше 18, то вывести строку «Добрый вечер, name! Вы совершеннолетний, поздравляем!», иначе вывести строку «Привет, name! Приносим извинения, но вы не можете гулять после 22:00». Пример:
# name = ‘Ivan’
# age = 21
>>> Добрый вечер, Ivan! Вы совершеннолетний, поздравляем!
# name = ‘Max’
# age = 14
>>> Привет, Max! Приносим извинения, но вы не можете гулять после 22:00
3. Пользователь вводит три строки. Одна из них равна строке «Python», выведите номер этой строки.
4. Пользователь вводит три целых числа. Два из них равны друг другу. Выведите третье число, не равное остальным. Если среди введенных чисел не оказалось двух равных друг другу, выведите строку «Ошибка».
5. Пользователь вводит целое число. Проверьте является ли это число четырехзначным, если является, то выведите строку «Успешно», иначе «Неудача».
6. Пользователь вводит целое число — текущее время в часах. Если количество часов находится между 7 и 10, то программа должна вывести строку «Пора вставать!», иначе выведется строка «Ты проспал!». Если введенное число отрицательно или больше 23, то программа должна вывести строку «Ошибка».
7. Пользователь вводит текущее время в часах. Если количество часов находится в диапазоне от 0 до 7, то программа выводит строку «Ночь». Если часовая стрелка находится между 7 и 11, то выведется строка «Утро». От 12 до 17 выведется строка «День». Если текущее время находится между 17 и 23, то программа должна вывести строку «Вечер». В случае, когда введенное число отрицательно или превосходит 23, программа должна вывести строку «Ошибка».
8. Пользователь вводит строку — название времени года. Если введенная строка — это лето, то выведите строку «Тополинный пух, жара, июль», если зима, то «Снеговик, снежки и горка», если осень, то «Пора в школу!», если весна, то «Весенняя капель». В случае, если введенная строка не равна ни одному из предложенных вариантов, программа должна выводить строку «Ошибка».
9. Пользователь вводит целое число — номер месяца своего рождения. Выведите строку «Вы родились летом», если номер месяц совпадает с номером одного из летних месяцев. Если номер месяца совпал с номером одного из зимних месяцев, то нужно вывести «К холодам вам не привыкать». Для людей, которые празднуют свой день рождения осенью выведите «Я тоже люблю осенний листопад». Если весна ваше время года выведите строку «Подснежник». В случае, если введенное число меньше единицы или больше 12, выведите строку «Ошибка».
10. Пользователь вводит номер года своего рождения. Если этот год является високосным выведите «Вы случайно родились не 29 февраля?», иначе выведите «Ничего необычного».
Для справки, в високосном году 366 дней, а в обычном — 365. Номер високосного года, делится на 4, за исключением номеров тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
11. Пользователь вводит целое число. Выведите его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число», например, численным описанием числа 190 является строка «положительное четное число».
12. Дано целое число, лежащее в диапазоне от 1 до 999. Если число двузначное, выведите строку «Двузначное», если число содержит одну значащую цифру, то выведите строку «Цифра», если число является трехзначным выведите «Трехзначное». В случае, если введенное число меньше 0 или больше 999, выведите строку «Ошибка!».
13. Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую или NO в противном случае. В случае, если хотя бы одно из введенных чисел не лежит в диапазоне от 1 до 8, выведите строку «Ошибка!».
14. Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ферзь попасть с первой клетки на вторую одним ходом. В случае, если хотя бы одно из введенных чисел не лежит в диапазоне от 1 до 8, выведите строку «Ошибка!».
15. Шахматный конь ходит буквой «Г» — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали, или наоборот. Даны две различные клетки шахматной доски, определите, может ли конь попасть с первой клетки на вторую одним ходом. В случае, если хотя бы одно из введенных чисел не лежит в диапазоне от 1 до 8, выведите строку «Ошибка!».
16. Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей. Дано a, b, c — стороны предполагаемого треугольника. Требуется сравнить длину каждого отрезка-стороны с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.
отличать двузначное число от однозначного в python строке [закрыт]
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад .
надо написать цикл, который при проходе по этой строке ‘a3b4c2e10b1’ сможет отличить 10 от 1 и 0. я уже пробовал проходиться по индексам, но на последнем элементе, выдает ошибку, что цикл вне строки, потому что проверяет значение которого нет — то есть выход за строку.
Как проверить что число двузначное в python
отличать двузначное число от однозначного в python строке [закрыт]

Сумма двух первых цифр заданного четырехзначного числа равна сумме двух его последних цифр
Составить программы, печатающие значение True, если следующие указанные высказывания являются.

Определить, является ли сумма цифр числа двухзначным числом
program pr1; uses crt; var a,b,c,m,p:integer; begin clrscr; textcolor(99);.
Похожие публикации:
- Как сделать функцию глобальной python
- Как скачать файл из интернета python
- Как сложить две строки в python
- Как создать бота в телеграмме на python
отличать двузначное число от однозначного в python строке [закрыт]
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 3 года назад .
надо написать цикл, который при проходе по этой строке 'a3b4c2e10b1' сможет отличить 10 от 1 и 0. я уже пробовал проходиться по индексам, но на последнем элементе, выдает ошибку, что цикл вне строки, потому что проверяет значение которого нет - то есть выход за строку.
Отслеживать
задан 24 июл 2020 в 13:31
1 2 2 серебряных знака 3 3 бронзовых знака
Чеееегоооо.
24 июл 2020 в 13:35
пример цикла можно? и задачу, которую он должен выполнить. А то ощущения, как и предыдущий комментарий
24 июл 2020 в 13:44
в задаче надо отличать буквы от цифр
24 июл 2020 в 13:45
for i in range(len(n)): if n[i] in 'abcdefghijklmnopqrstuvwxyz': c=n[i] else: if n[i+1] not in 'abcdefghijklmnopqrstuvwxyz': m=int(n[i]+(n[i+1])) else: m=int(n[i])
24 июл 2020 в 13:45
Отредактируйте вопрос, добавив туда код из комментария
24 июл 2020 в 14:10
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Используйте регулярные выражения - это проще всего
Вариант 1
>>> import re >>> res = re.findall(r"([a-zA-Z])*(\d*)", 'a3b4c2e10b1') >>> res [('a', '3'), ('b', '4'), ('c', '2'), ('e', '10'), ('b', '1'), (' ', ' ')] >>> letters, digits = [a[0] for a in res if a[0]], [a[1] for a in res if a[1]] >>> letters ['a', 'b', 'c', 'e', 'b'] >>> digits ['3', '4', '2', '10', '1']
UPD: теперь регулярке плевать, в каком порядке идут буквы и цифры, но приходится избавляться от пустых значений некрасиво, оптимизацию оставляю вам)
Вариант 2
>>> a = "a3b4c2e10b1" >>> digits = list(filter(None, re.split("[a-zA-Z]+", a))) >>> letters = list(filter(None, re.split("\d+", a)))
