【问题标题】:Why does Python print my string with quotes and commas?为什么 Python 用引号和逗号打印我的字符串?
【发布时间】:2021-07-26 10:05:32
【问题描述】:

所以当我运行以下代码时:

x = 4
y = 'the value', x, 'is truthy'
print(y)

我不明白为什么我的输出是 :('the value', 4, 'is truthy')

例如,如果我只是直接打印这行代码:

print('the value', x, 'is truthy') 

不是很严重的问题,我可以使用格式化功能来避免问题V

def truthy_or_falsy2(arg):
    if arg: 
        return f'The value {arg} is truthy'
    
    return 'The value {arg} is falsy'

感谢您的建议!

【问题讨论】:

  • 在您的y 赋值语句中,您无意中使用了在赋值运算符右侧创建元组的语法——您可以通过检查y 的类型来判断。试试吧,y = "the value " + str(x) + " is truthy"
  • 刚刚复习过元组,还在学习整个 Python。我认为那是有道理的。那么说 format 方法是在字符串中轻松放置整数的唯一方法是正确的说法吗?我知道你可以使用 str() 函数,但不这样做,这是唯一的方法吗?
  • 是的,格式字符串(“f 字符串”)可能是从混合类型表达式创建字符串的最流行选择,因为它们是在 Python 3.6 中引入的(参见 Python 3's f-Strings: An Improved String Formatting Syntax (Guide)
  • 好的,谢谢你的帮助!

标签: python-3.x string variables integer


【解决方案1】:

当您编写y = 'the value', x, 'is truthy' 时,您将 y 设置为一个元组,因为您将其设置为多个用逗号分隔的值。对于它是一个简单的字符串,您可以使用连接:
y = 'the value '+ str(x) + ' is truthy'
或字符串格式:
y= 'The value {0} is truthy'.format(x)
当您将其直接写入print('the value', x, 'is truthy') 之类的打印语句时不会出现此问题的原因是函数参数的工作方式:每个逗号分隔值作为另一个参数传递给函数,并且打印语句只是将每个参数打印出来.因此,当您这样编写时,每个逗号分隔的项目都被视为不同的项目并打印,而不是全部放在一个元组中,然后当您将其分配给诸如y = 'the value', x, 'is truthy' 中的变量时,您将其作为一个整体打印出来

【讨论】:

  • 非常感谢您的深入回复。按照您的解释方式,这是有道理的。我想我在教程中经常使用 print,我忘记了它是一个像其他任何东西一样的函数,并且用逗号分隔具有不同的含义或目的,而不是当我将它设置为变量 y 时。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多