输出不是我想要的

时间:2017-01-23 07:33:12

标签: python python-2.7 output

我对python很新。我正在编写代码来生成一个数字数组,但输出不是我想要的。

代码如下

import numpy as np

n_zero=input('Insert the amount of 0:  ')
n_one =input('Insert the amount of 1: ')
n_two =input('Insert the amount of 2: ')
n_three = input('Insert the amount of 3: ')

data = [0]*n_zero + [1]*n_one + [2]*n_two + [3]*n_three
np.random.shuffle(data)
print(data)

输出如下:

Insert the amount of 0:  10
Insert the amount of 1: 3
Insert the amount of 2: 3
Insert the amount of 3: 3
[0, 0, 3, 1, 0, 3, 2, 0, 3, 0, 2, 0, 2, 1, 1, 0, 0, 0, 0]

我想要以下输出:

0031032030202110000

谢谢

4 个答案:

答案 0 :(得分:0)

有两个问题。这是更正后的代码,解释如下:

import numpy as np

n_zero=int(input('Insert the amount of 0:  '))
n_one =int(input('Insert the amount of 1: '))
n_two =int(input('Insert the amount of 2: '))
n_three = int(input('Insert the amount of 3: '))

data = [0]*n_zero + [1]*n_one + [2]*n_two + [3]*n_three
np.random.shuffle(data)
s = ''.join(map(str, data))

print(s)

首先,您需要将字符串的输入转换为整数。我在每个输入行添加了int()

然后你必须将你得到的列表data转换为你想要的表示的字符串。我用

做到了
s = ''.join(map(str, data))

因为我喜欢在使代码简洁时使用map。如果您愿意,可以使用列表理解。

最终,打印'当然不是data

答案 1 :(得分:0)

np.random.shuffle(data)行之后

再添加一行代码,将list转换为字符串

data = ''.join(data)

这样做。

答案 2 :(得分:0)

而不是创建数字列表

    data = [0]*n_zero + [1]*n_one + [2]*n_two + [3]*n_three

创建字符列表

    data = ["0"] * n_zero + ["1"] * n_one + ["2"] * n_two + ["3"] * n_three

然后代替

    print(data)

使用

    print "".join(data)

答案 3 :(得分:0)

如果输出

0 0 3 1 0 3 2 0 3 0 2 0 2 1 1 0 0 0 0

(数字之间有空格)可接受,使用

for i in data: print i,

(请注意最后的逗号)而不是打印声明。