我们如何找到特定数字的单位数字?

How can we find the unit digits of a specific number?

我只是想知道 python 中是否有代码可以查找我输入的数字的个位数。

Number=int(input('Enter a number:'))
print(Number)
while Number>=100:
  print(Number-) #That's a minus sign.

顺便说一句,是的,我正在尝试编写一个程序,该程序接受一个正整数作为输入并使用算法检查该整数是否可以被 11 整除。这个被 11 整除的特殊测试是查尔斯·道奇森 (Charles L. Dodgson) 于 1897 年给出。

所以我需要把数字的个位去掉,然后用个位减去这个数字,直到得到一个两位数,这里我们计算它是否能被11整除。

有人可以帮忙吗?

谢谢,顺便说一句,我在 python 方面经验不足。

看来问题描述不完整。算法可以是:

  • 通过省略单位来缩短数字
  • 再次从数字中减去单位
  • 将数字乘以-1

最终结果将是对 11 取模的数字,尽管它可能为负数。

num = int(input('Enter a number:'))
print("Given number:   ", num, "   Trying to find num % 11 =", num % 11)
while abs(num) >= 11:
    units = num % 10
    num //= 10  # integer division
    num -= units
    num = -num
    print("Modified number:", num)
if num < 0:
    num += 11
print("Result:", num)

一个简化的算法,没有烦人的 num = -num 只检查是否被 11 整除:

num = int(input('Enter a number:'))
print("Given number:   ", num, "   Trying to find num % 11 == 0 :", num % 11 == 0)
given_number = num
while num >= 100:
    units = num % 10  # find the last digit
    num //= 10  # integer division (i.e. remove the last digit)
    num -= units  # subtract the just found last digi
    print("Modified number:", num)

if num in [0, 11, 22, 33, 44, 55, 66, 77, 88, 99]:
    print(given_number, "is divisible by 11")
else:
    print(given_number, "is NOT divisible by 11")

我假设你指的是 this algorithm?

如您所说,您需要在 while 循环中执行 2 个操作:

  1. 求个位数:
unitsDigit = Number % 10

这给出了对 10 取模的数字,这是个位数。你可以认为是除以10后的余数read more here.

  1. 不带个位数的数减去个位:
Number = Number // 10

这执行整数除法只给你除以 10 的 (因此 "deleting" 个位数)。

Number -= unitsDigit

这将从缩短的数字中减去个位数。

Phantom 似乎在用老把戏来确定一个数字是否可以被 11 整除。显然现在你可以只使用模运算符,但让我们假装我们是按照他们 100 年的方式来做的前。对于那些感兴趣的人,请快速 google 打开它:

https://wcipeg.com/problem/ccc96s2

为了让它工作,我们必须前后翻转,将数字视为字符串和整数。作为一个字符串,我们可以很容易地将数字拆分并遵循这个过程。

# From Phantom's code
input_number = int(input('enter a number: '))
print(input_number)

# An intermediate variable to hold the number
worker = abs(input_number)

# for loop that is equal to one less than the number of digits
while worker > 10 :   # Edit - Thanks JohanC for the suggestion in the comments
    # take the last digit and subtract it from the remainging digits
    worker = int(str(worker)[0:(len(str(worker))-1)]) - int(str(worker)[-1])
    print(worker)

# Finish with a print of the divisibility
if worker == 0 : 
    print('The number {} is divisible by 11.'.format(input_number))
else : 
    print('The number {} is not divisible by 11.'.format(input_number))

希望对您有所帮助,这正是您要找的!