2017-10-16 253 views
1

我有一个变量,它给出每个循环从列表中获取的输出数字。在同一行上打印数字(Python)

idx = 0 
for i in y: 
     listbyte = subprocess.check_output('python foo.py ' + path + str(y[idx]), shell=True).rstrip() 
     idx += 1 
     listnum = listbyte.decode() 
     number = (listnum[0]) 
     print(number) 
     u.append(listnum) 

如果我打印number,输出格式为:

1 
2 
3 
4 
5 

如果我把end = ''在打印结束后,它工作得很好,outputing:12345

问题是:我怎样才能使这个输出变量?我必须在程序中使用这种格式的代码,但从我看到end = ''参数是限制为print()函数。

应该是这样的:

a = number(listnum[0]) 
print(a) 

>>>12345 

感谢

编辑:使用Megabeets回答,现在输出的是:

0 
09 
091 
0912 
09126 
091265 
0912655 
09126554 
091265548 
+0

没有重复,这个问题的答案并不适用于我的问题.. – Link

+1

只需创建一个字符串变量,或许元素累积成一个列表,然后使用'“”。加入()'。 –

回答

1

您可以使用a += (listnum[0]),你可以看到在下面的例子:

a = '' 
idx = 0 
for i in y: 
     listbyte = subprocess.check_output('python foo.py ' + path + str(y[idx]), shell=True).rstrip() 
     idx += 1 
     listnum = listbyte.decode() 
     a += (listnum[0]) 
     u.append(listnum) 

然后a将包含“12345”

>>> print(a) 
12345 

如果你想a是在最后一个整数,而不是一个字符串的字符串,则可以使用int(a)

+0

在应用您的答案后编辑了问题。谢谢,顺便说一句。 – Link

+0

不要在每次迭代中打印'a'。在循环之外打印,仅在'for'之后。 – Megabeets

+0

从循环中打印出错误...从“a”我不能选择只打印最后一个? – Link

1

你解析它可以将数字存储在string中,并将其转换为int,或者稍后追加到listjoin

[1,5]号码列表:使用str

>>> nums = '' 
>>> for i in range(1,6): 
     nums+=str(i) 

>>> nums 
=> '12345' 
>>> int(nums) 
=> 12345 

甚至做没有任何转换

使用list

>>> nums = [] 
>>> for i in range(1,6): 
     nums.append(i) 

>>> nums 
=> [1, 2, 3, 4, 5] 
>>> ''.join(str(x) for x in nums) 
=> '12345' 
>>> int(''.join(str(x) for x in nums)) 
=> 12345 

数学

>>> nums=0 
>>> for i in range(1,6): 
     nums=(nums*10)+i 

>>> nums 
=> 12345 
+0

事实上,这些数字是随着换行而来的,而不是在同一行中,我无法控制它的工作方式。他们来自阵列... 您的解决方案听起来很适合其他任何情况,但不适合我,我猜... – Link

+0

@Link,而不是打印'number',只是*使用*任何上述技术,然后稍后在循环之后,“打印”它。因此,对于* example *,使用'list',而不是执行'print(number)',执行'nums.append(number)',然后在循环结束后,使用'join'函数他们在一起。 –