将整数拆分为数字以计算ISBN校验和

2024-04-20 11:12:53 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

用它做一个字符串。

myinteger = 212345
number_string = str(myinteger)

够了。现在您可以对其进行迭代:

for ch in number_string:
    print ch # will print each digit in order

或者你可以把它切成片:

print number_string[:2] # first two digits
print number_string[-3:] # last three digits
print number_string[3] # forth digit

或者更好的方法是,不要将用户的输入转换为整数(用户键入字符串)

isbn = raw_input()
for pos, ch in enumerate(reversed(isbn)):
    print "%d * %d is %d" % pos + 2, int(ch), int(ch) * (pos + 2)

有关详细信息,请阅读tutorial

list_of_ints = [int(i) for i in str(ISBN)]

会给你一个有序的整数列表。当然,给定duck类型,您也可以使用str(ISBN)。

编辑:正如注释中提到的,这个列表不是按升序或降序排序的,但是它有一个定义好的顺序(理论上python中的集合、字典等没有,尽管实际上这个顺序是相当可靠的)。如果要排序:

ints.sort()的列表

是你的朋友。请注意,sort()就地排序(如中所示,实际上更改了现有列表的顺序),并且不返回新列表。

while number:
    digit = number % 10

    # do whatever with digit

    # remove last digit from number (as integer)
    number //= 10

在循环的每次迭代中,它从数字中删除最后一个数字,并将其分配给digit。 相反,从最后一个数字开始,以第一个数字结束

相关问题 更多 >