Ответ 1
Остается при делении на 10, как в
numericVariable % 10
Это работает только для положительных чисел. -12% 10 дает 8
Есть ли способ получить последнюю цифру числа. Я пытаюсь найти переменные, которые заканчиваются на "1", например, 1,11,21,31,41 и т.д.
Если я использую текстовую переменную, я могу просто поставить
print number[:-1]
но он работает для переменных с текстом (например, "привет" ), но не с номерами. С номерами я получаю эту ошибку:
TypeError: 'int' object is not subscriptable
Я пытаюсь понять, есть ли лучший способ справиться с цифрами таким образом. Я знаю, что решение состоит в том, чтобы преобразовать в строку, а затем выполнить приведенную выше команду, но я пытаюсь увидеть, есть ли другой способ, который я пропустил.
Большое спасибо заранее...
Остается при делении на 10, как в
numericVariable % 10
Это работает только для положительных чисел. -12% 10 дает 8
Используйте оператор модуля с 10:
num = 11
if num % 10 == 1:
print 'Whee!'
Это дает остаток при делении на 10, который всегда будет последней цифрой (когда число положительное).
Итак, вы хотите получить доступ к цифрам в виде целого числа, например элементов в списке; Проще всего я могу думать:
n = 56789
lastdigit = int(repr(n)[-1])
# > 9
Преобразуйте n в строку, обращаясь к последнему элементу, затем используйте конструктор int для преобразования обратно в целое число.
Для числа с плавающей точкой:
n = 179.123
fstr = repr(n)
signif_digits, fract_digits = fstr.split('.')
# > ['179', '123']
signif_lastdigit = int(signif_digits[-1])
# > 9
Я еще не могу добавить комментарий, но я хотел повторить и расширить то, что сказал Джим Гаррисон
Остается при делении на 10, как в numericVariable% 10
Это работает только для положительных чисел. -12% 10 дает 8
В то время как модуль (%) работает по назначению, используйте абсолютное значение для использования модуля в этой ситуации.
abs(numericVariable) % 10
Используя итерацию и встроенную функцию "digit", номер обрабатывается как двоичный, и поэтому он переходит с обратной стороны вперед. Вот пример немного кода для вас.
for digit in binary:
denary= denary*2 + int(digit)
Lotsoul, это должно работать:
number = int(10)
#The variable number can also be a float or double, and I think it should still work.
lastDigit = int(repr(number)[-1])
#This gives the last digit of the variable "number."
if lastDigit == 1 :
print("The number ends in 1!")
Вместо оператора print в конце вы можете добавить код, который будет делать то, что вам нужно, с числами, заканчивающимися на 1.
Надеюсь, это помогло!