


[PYTHON] Оцените пожалуйста корректность кода. (не использовать больше 3 переменных)
Тут просят вывести код который проверят от 1 до 9 чисел сколько чисел тут имеется. Другого варианта не смог придумать. Я использовал то что мы только проходили
number = int(input("Enter 1 to 9 digit number : "))
print(f'one digit:{number//1!=0}')
print(f'two digit:{number//10!=0}')
print(f'three digit:{number//100!=0}')
print(f'four digit:{number//1000!=0}')
print(f'five digit:{number//10000!=0}')
print(f'six digit:{number//100000!=0}')
print(f'seven digit:{number//1000000!=0}')
print(f'eight digit:{number//10000000!=0}')
print(f'nine digit:{number//100000000!=0}')
> сколько чисел тут имеется.
То есть посчитать количество цифр в числе? Потому что число у тебя "имеется" всегда только одно.
>Другого варианта не смог придумать.
Количество цифр в целом десятичном числе равно десятичному логарифму этого числа, округленному вверх. Таким образом, тебе нужна только 1 переменная и программа в 2 строки ровно. И зачем программистам математика?
#1 способ, через цикл:
count = 0
number = 1234567
while number != 0:
~~~~count+=1
~~~~number //= 10
print(count)
#2 способ, конвертируем число в строку
#и замеряем длинну строки
number = 1234567
print(len(str(number)))
#3 способ чепез логарифм по основ. 10
#логарифм - это обратное степени действие
#то есть возвращает число, которое нужно возвести 10, чтобы вышло 1234567. Число получится дробное, округляем его вверх до целого
numbers = 1234567
import math
print(math.ceil(math.log10(abs(numbers))))
#4й способ
Еще можно использовать if, elif, else. Как раз для твоего случая это лучшее решение. Без вычислений самый быстрый вариант по скорости исполнения выйдет:
if numbers >= 1000: print(4)
elif numbers >= 10000: print(5)
print (len(list(str(int(input('Число? '))))))
Бросай ты это программирование... Пусть им китайцы занимаются... :)))