1

在 Python 3 中,我想返回整数值的单位,然后是十位,然后是数百位,依此类推。假设我有一个整数 456,首先我要返回 6,然后是 5,然后是 4。有什么办法吗?我尝试了楼层划分和 for 循环,但没有奏效。

4

2 回答 2

0

如果您想根据以下要求在代码的不同位置检索数字,请编写一个生成器。

如果您对 Python 的生成器不太熟悉,请快速查看https://www.programiz.com/python-programming/generator

» 这里get_digits()是一个生成器。

def get_digits(n):
    while str(n):
        yield n % 10

        n = n // 10
        if not n:
            break

digit = get_digits(1729)

print(next(digit)) # 9
print(next(digit)) # 2
print(next(digit)) # 7
print(next(digit)) # 1

» 如果您希望迭代数字,您也可以按照以下方式进行。

for digit in get_digits(74831965):
    print(digit)

# 5
# 6
# 9
# 1
# 3
# 8
# 4
# 7

»关于其用法的快速概述(在 Python3 的交互式终端上)。

>>> def letter(name):
...     for ch in name:
...         yield ch
... 
>>> 
>>> char = letter("RISHIKESH")
>>> 
>>> next(char)
'R'
>>> 
>>> "Second letter is my name is: " + next(char)
'Second letter is my name is: I'
>>> 
>>> "3rd one: " + next(char)
'3rd one: S'
>>> 
>>> next(char)
'H'
>>> 
于 2019-03-20T17:20:52.333 回答
0

如果您查看文档中的基本运算符列表,例如这里

Operator    Description     Example
% Modulus   Divides left hand operand by right hand operand and returns remainder   b % a = 1
//  Floor Division - The division of operands where the result is the quotient in which the digits after the decimal point are removed. But if one of the operands is negative, the result is floored, i.e., rounded away from zero (towards negative infinity):    9//2 = 4 and 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0

有了这些知识,你可以得到你想要的东西,如下所示:

In [1]: a = 456 

In [2]: a % 10 
Out[2]: 6

In [3]: (a % 100) // 10 
Out[3]: 5

In [4]: a // 100 
Out[4]: 4
于 2019-03-20T16:47:55.217 回答