0

我已经花了几周的时间来学习 python,我正在尝试编写一个脚本,该脚本可以输入任意长度的数字并将它们拆分为一个字符的长度。像这样:输入:

123456

输出:

1           2            3            4            5            6

我需要在不使用字符串的情况下执行此操作,最好使用 divmod... 像这样:

 s = int(input("enter numbers you want to split:"))
     while s > 0:
         s, remainder = divmod(s, 10)

我不确定如何正确设置间距。

感谢您的帮助。

4

4 回答 4

2

由于您的优先级是使用divmod,​​您可以这样做:

lst=[]
while s>0:
    s, remainder = divmod(s, 10)
    lst.append(remainder)

for i in reversed(lst):
    print i,

输出:

enter numbers you want to split:123456
1 2 3 4 5 6

您可以使用join()来实现这一点。如果您使用的是 python 2.*,则转换为字符串

s = input("enter numbers you want to split:")
s= str(s)
digitlist=list(s)
print " ".join(digitlist)

如果您需要整数,请执行此操作。

intDigitlist=map(int,digitlist)
于 2015-10-06T13:48:07.177 回答
0

您可以遍历 Python 字符串并使用 String.join() 来获得结果:

>>>'  '.join(str(input("Enter numbers you want to split: ")))
Enter numbers you want to split: 12345
1  2  3  4  5  
于 2015-10-06T14:28:19.800 回答
0

用 mod 试试:

while x > 0:
   x = input
   y = x % 10
   //add y to list of numbers
   x = (int) x / 10

例如,如果 x 是 123:

123 % 10 是 3 -> 你保存 3。123 / 10 的整数值是 12。然后 12 % 10 是 2 -> 你保存 2 Int of 12 / 10 是 1。1 % 10 = 1 -> 你保存 1

现在你有了所有的数字。之后,您可以反转列表以获得所需的结果。

于 2015-10-06T13:32:49.447 回答
0

使用余数的以下内容如何:

s = 123456
output = []
while s > 0:
    s, r = divmod(s, 10)
    output.append(r)

fmt='{:<12d}'*len(output)
print fmt.format(*output[::-1])

输出:

1           2           3           4           5           6

这也使用了一些其他有用的 Python 内容:数字列表可以反转 ( output[::-1]) 并格式化为 12 个字符的字段,数字在左侧对齐 ( {:<12d})。

于 2015-10-06T13:36:42.703 回答