2017-06-13 36 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'' –