2017-06-13 3 views
0

Ich habe viele stackoverflow und andere Hilfeseiten für eine Antwort auf diese Suche durchsucht, aber keine der Lösungen scheint zu funktionieren.Mehrere Variablen werden nicht auf eine Zeile gedruckt

Ich bin neu in Python, also ist dies wahrscheinlich eine wirklich einfache Lösung, ich kann es einfach nicht mit globalen x, nonlocal x, print (x, end = '') oder den anderen Vorschlägen, die ich gefunden habe, arbeiten.

Ich habe versucht, Variablen zuzuweisen (d. H. A = 'Nachricht'), wenn bestimmte Bedingungen innerhalb eines Datensatzes erfüllt sind. Ich möchte dann diese Variablen am Ende der Funktion drucken. Ich bin in der Lage, es auf mehrere Zeilen mit der Druckfunktion nach jeder Anweisung zu drucken, aber ich möchte alle Zeichenfolgen auf eine Zeile drucken.

Mein Code:

column = [int(v) for v in entries[3:]] 
def function(): 
    if column[0] == 100: 
     print('Message') 
     if column[1] >= 200 and column[2] == 300: 
      if len(column) >= 9: 
       digit = [chr(x) for x in column[4:9]] 
       for l in range(0, 5): 
        print('Message Update: ' + digit[l]) 
      if len(column) >= 13: 
       optional_digit = [chr(d) for d in column[9:13]] 
       for m in range(0, 4): 
        print('Optional Field: ' + optional_digit[m]) 
      else: 
       print('No Optional Field') 
     else: 
      print('Not a Message Update) 
    else: 
     print('Not a Message') 
    print('') 
function() 

In einer perfekten Welt, und unter der Annahme Datensätze meine Bedingungen erfüllen, würde Ich mag so etwas wie „Nachricht senden Update-542“ für einen Datensatz sehen, nachdem meine Funktion ausgeführt wird eine einzige Linie.

Bitte helfen! :)

+3

Haben Sie versucht, verketten in 1 Zeichenfolge, und drucken Sie diese Zeichenfolge nur am Ende? – RaphaMex

+4

Ich sehe Sie nicht mit 'end =" "' irgendwo hier. Das ist die Antwort, es sei denn, Sie verketten die Zeichenfolgen, anstatt sie direkt zu drucken. – Carcigenicate

+0

column = [int (v) für v in Einträgen [3:]] ---- Woher kommen Einträge? drucken ('Keine Nachrichtenaktualisierung) ---- Sie vermissen ein' am Ende – Floaterz

Antwort

0

Versuchen Sie, alle Teile der Nachricht an ein Array anhängen und sie dann drucken

column = [int(v) for v in entries[3:]] 
def function(): 
    message = [] 
    if column[0] == 100: 
     message.append('Message') 
     if column[1] >= 200 and column[2] == 300: 
      if len(column) >= 9: 
       digit = [chr(x) for x in column[4:9]] 
       message.append('Message Update:') 
       message.append(''.join(str(digit[l]) for l in range(5))) 
      if len(column) >= 13: 
       optional_digit = [chr(d) for d in column[9:13]] 
       for m in range(0, 4): 
        message.append('Optional Field: ' + optional_digit[m]) 
      else: 
       message.append('No Optional Field') 
     else: 
      message.append('Not a Message Update) 
    else: 
     message.append('Not a Message') 
    print(*message, end='') 
function() 

EDIT

Es scheint, Sie String wie ‚Nachricht senden Update-123‘ erhalten möchten, so sollten Sie Erstellen Sie einfach eine Sequenz dieser Zahlen und fügen Sie sie an/concantenate sie nach

0

Um die Zeilenvorschub am Ende eines Python (python3) entfernen Sie es drucken nennen diese Art und Weise:

print(your_string, end="") 
0
column = [int(v) for v in entries[3:]] 

def function(): 
    print_string = '' 
    if column[0] == 100: 
     print_string += 'Message ' 
     if column[1] >= 200 and column[2] == 300: 
      if len(column) >= 9: 
       digit = [chr(x) for x in column[4:9]] 
       for l in range(0, 5): 
        if 'Message Update: ' in print_string: 
         print_string += digit[l] 
        else: 
         print_string += f'Message Update: {digit[l]}' 
      if len(column) >= 13: 
       optional_digit = [chr(d) for d in column[9:13]] 
       for m in range(0, 4): 
        if 'Optional Field: ' in print_string: 
         print_string += optional_digit[m] 
        else: 
         print_string += f'Optional Field: {optional_digit[m]}' 
      else: 
       print_string += 'No Optional Field ' 
     else: 
      print_string += 'Not a Message Update ' 
    else: 
     print_string += 'Not a Message ' 
    print(print_string) 

function() 
+0

Wenn die Bedingungen erfüllt sind, druckt es aus irgendeinem Grund jetzt "Nachricht Nachricht Update 1 Nachricht Update 2 Nachricht Update 3 usw. etc . " Gibt es einen Weg, um diesen Code stattdessen etwas wie "Message Message Update 123" zu drucken? – DRauch

+0

Sicher, Sie könnten überprüfen, ob 'print_string 'bereits" Message Update "enthält, und wenn dies der Fall ist, könnten Sie diese Wörter verketten:' if' Nachrichtenaktualisierung: 'in print_string: print_string + = digit [l] '. –

+0

Dies schien das Problem nicht zu beheben. Es hat "Nachrichtenaktualisierung" vollständig aus der Druckzeile entfernt. Ich brauche es, um "Nachricht Update:" nur einmal zu drucken und dann die Ziffern in Ziffer [l] danach zu drucken. – DRauch

1

Sie einen String konstruieren könnte, wo Sie Ihre print-Anweisungen und dann drucken Alles am Ende anstatt wie du gehst.

column = [int(v) for v in entries[3:]] 
def function(): 
    if column[0] == 100: 
     msg = 'Message' 
     if column[1] >= 200 and column[2] == 300: 
      if len(column) >= 9: 
       digit = [chr(x) for x in column[4:9]] 
       for l in range(0, 5): 
        msg = '%s Message Update: %d' %(msg, digit[l]) 
      if len(column) >= 13: 
       optional_digit = [chr(d) for d in column[9:13]] 
       for m in range(0, 4): 
        msg = '%s\n\tOptional Field: %d' %(msg, optional_digit[m]) 
      else: 
       msg = '%s\n\tNo Optional Field' %msg 
     else: 
      msg = '%s Not a Message Update' %msg 
    else: 
     msg = '%s Not a Message' %msg 
    print(msg) 
function() 

war ich nicht sicher, ob Sie das optionale Feld in der gleichen Linie wollte - ich ließ es tatsächlich zu einer neuen Zeile und Tabbed einmal vorbei, aber Sie können leicht entfernen, wenn Sie wollen es alle auf dem gleichen Linie.

+0

Entschuldigung ... vergessen zu erwähnen, dass ich auch einige String-Formatierungen gemacht habe, aber Sie können auch 'msg + = 'new stuff' verwenden, wenn Sie bevorzugen –

Verwandte Themen