2017-06-13 63 views
0

我已經通過大量的stackoverflow和其他幫助網站搜索答案,但沒有一個解決方案似乎工作。我只是不能使用全局x,非本地x,打印(x,end ='')或我發現的其他建議來工作。多個變量不會打印到一行

如果某些條件在數據集內得到滿足,我試着將變量賦值給(即a ='消息')。然後我想在函數的最後打印這些變量。我可以在每條語句後使用print函數在多行上打印它,但我希望所有字符串都打印到一行。

我的代碼:

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

在一個完美的世界,並假設數據集滿足我的條件,我想執行我的功能後,看到類似「消息消息更新542」爲一個數據集一條線。

請幫忙! :)

+3

你試過連接成1個字符串,並只在最後打印該字符串? – RaphaMex

+4

我在這裏的任何地方都沒有看到你使用'end =「」''。這是答案,除非你連接字符串,而不是直接打印 – Carcigenicate

+0

column = [int(v)for v in entries [3:]] ----從哪裏來的條目? 打印('不是消息更新)----你錯過了'最後 – Floaterz

回答

0

嘗試信息的全部內容追加到一個數組,然後打印出來

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

編輯

看來你想要得到的字符串如「郵件信息更新123」,所以你應該簡單地創建一個這個數字的序列,並追加/ concantenate他們之後

0

要在蟒蛇(python3)的末尾刪除換行打印這樣調用它:

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

當條件滿足時,由於某種原因它現在打印「消息消息更新1消息更新2消息更新3等等等「。有沒有辦法讓這個代碼,而不是打印像「消息消息更新123」? – DRauch

+0

當然,你可以檢查'print_string'是否已經包含'Message Update',如果是,你可以跳過連接這些單詞到'print_string:print_string + = digit [l]'中'if'消息更新:'。 –

+0

這似乎沒有解決這個問題。它從打印行中完全刪除了「消息更新:」。我需要它打印'消息更新:'一次,然後在數字後面打印數字[l]。 – DRauch

1

您可以構建一個字符串,你有你的打印語句,然後打印這一切都在最後,而不是你去。

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

我不知道,如果你在同一個網上通緝的可選字段 - 我居然下降到一個新的生產線和標籤過一次,但你可以很容易地刪除,如果你想這一切在同一線。

+0

對不起...忘了提及我也做了一些字符串格式化,但是如果你更喜歡,你也可以使用'msg + ='new stuff'' –