2017-10-16 155 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'函數他們在一起。 –