2017-10-16 9 views
1

Ich habe eine Variable, die als Ausgangsnummern aus einer Liste jeder Schleife geben.Drucken Sie Zahlen in der gleichen Zeile (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) 

Wenn ich number drucken, das Ausgabeformat ist:

1 
2 
3 
4 
5 

Wenn ich end = '' am Ende des Drucks setzen, es funktioniert ziemlich gut, outputing: 12345.

Die Frage ist: Wie kann ich diese Ausgabe eine Variable machen? Ich muss dieses Format für einige Code voraus im Programm verwenden, aber von was ich sehe, ist das end = '' Argument etwas auf print() Funktion beschränkt.

Es sollte wie folgt sein:

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

>>>12345 

Dank

EDIT: mit Megabeets Antwort, jetzt ist die Ausgabe:

0 
09 
091 
0912 
09126 
091265 
0912655 
09126554 
091265548 
+0

kein Duplikat, die Antwort dieser Frage gilt nicht für mein Problem .. – Link

+1

einfach ein String-Variable erstellen, vielleicht die Elemente in eine Liste akkumuliert und dann mit '‚‘.join()'. –

Antwort

1

Sie a += (listnum[0]) verwenden können, wie Sie sehen in kann das folgende Beispiel:

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) 

Und dann wird a eine Zeichenfolge sein, die „12345“

>>> print(a) 
12345 

Im Fall enthält Sie a wollen am Ende eine ganze Zahl sein, und kein String, können Sie es analysieren int(a)

+0

bearbeitet Frage nach dem Anwenden Ihrer Antwort. danke, übrigens. – Link

+0

Nicht 'a' in jeder Iteration drucken. Drucke es außerhalb der Schleife, nur nach dem 'for'. – Megabeets

+0

Drucken von der Schleife gibt es Fehler ... Von "a" kann ich nicht auswählen, nur die letzte zu drucken? – Link

1

Sie mit kann entweder die Zahlen in einer string speichern und diese zu int konvertieren oder später an eine list und join anhängen.

Beispiel für eine Liste von Zahlen von [1,5]:

eine list Verwendung,

>>> 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 

ein str

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

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

oder sogar ohne Konvertierungen Verwendung mathematisch

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

>>> nums 
=> 12345 
+0

Tatsache ist, dass die Zahlen mit Zeilenumbruch kommen, nicht in der gleichen Zeile und ich kann nicht kontrollieren, wie das funktioniert. Sie kommen von einem Array ... Ihre Lösungen klingt perfekt für jede andere Situation, aber nicht für meine, denke ich ... – Link

+0

@Link, anstatt "Nummer" zu drucken, nur * verwenden * eine der oben genannten Technik und dann Später, nach der Schleife, "print" es. Also für * example *, benutze 'list' anstelle von' print (number) ', tu' nums.append (number) 'und dann, nachdem die Schleife vorüber ist, verwende die Join-Funktion, wie ich gezeigt habe Sie zusammen. –

Verwandte Themen