Python 多个变量不会打印到一行

Python 多个变量不会打印到一行,python,function,printing,Python,Function,Printing,我在stackoverflow和其他帮助网站上搜索了很多答案,但似乎没有一个解决方案有效 我是Python新手,所以这可能是一个非常简单的修复方法,我只是无法使用全局x、非局部x、printx、end=或我找到的其他建议使它工作 我曾尝试将变量分配给,即,如果数据集中满足某些条件,则a='Message'。然后我想在函数末尾打印这些变量。我可以在每条语句后使用print函数将其打印到多行,但我希望所有字符串都打印到一行 我的代码: column = [int(v) for v in entrie

我在stackoverflow和其他帮助网站上搜索了很多答案,但似乎没有一个解决方案有效

我是Python新手,所以这可能是一个非常简单的修复方法,我只是无法使用全局x、非局部x、printx、end=或我找到的其他建议使它工作

我曾尝试将变量分配给,即,如果数据集中满足某些条件,则a='Message'。然后我想在函数末尾打印这些变量。我可以在每条语句后使用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


请帮忙

要删除python python3打印结束处的换行符,请按以下方式调用:

print(your_string, end="")

您可以构造一个字符串,其中包含print语句,然后在末尾而不是在执行时将其全部打印出来

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

我不确定您是否希望将可选字段放在同一行中-实际上我将其放到了新行,并使用了一次选项卡,但如果您希望所有字段都放在同一行中,您可以轻松地将其删除。

尝试将消息的所有部分附加到一个数组中,然后打印它们

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


似乎您希望获得类似“Message Update 123”的字符串,因此您应该简单地创建一个数字序列,并在尝试连接成一个字符串后附加/连接它们,并仅在末尾打印该字符串?我看不到您在这里的任何地方使用end=。这就是答案,除非您将字符串连接起来,而不是直接打印它们Column=[intv for v in entries[3:]--条目来自哪里??打印“不是消息更新--您在结尾处缺少了”抱歉。。。忘了提到我也做了一些字符串格式化,但是如果您愿意,也可以使用msg+=“new stuff”,当条件满足时,出于某种原因,它现在打印消息更新1消息更新2消息更新3等。。是否有办法让此代码改为打印消息更新123之类的内容?当然,您可以检查print\u字符串是否已包含消息更新,如果已包含消息更新,则可以跳过将这些单词连接到它:if'Message Update:,in print\u string:print\u string+=digit[l]。这似乎无法解决问题。它从打印行中完全删除了“消息更新”。我需要它只打印一次“消息更新”,然后打印后面数字[l]中的数字。@DRauch问一个新问题?如果在连接“消息更新”之前检查是否存在“消息更新”,它将起作用。@DRauch我更改了上面的代码以完成此操作。我也做了可选的数字,虽然我不知道这是否是你的意图。仅供参考,如果除了消息更新之外,还有可选字段要添加到消息中,这将变得混乱。
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()