我对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
谢谢
答案 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,
(请注意最后的逗号)而不是打印声明。