我做了什么冒犯了Python解释器?

2024-06-16 11:45:04 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行以下代码时:

# This program calculates gross pay.
def main():

    # Get the number of hours worked.
    hours = int(input('How many hours did you work? '))

    # Get the hourly pay rate.
    pay_rate = float(input('Enter your hourly pay rate: '))

    # Calculate the gross pay.
    gross_pay = hours * pay_rate

    # Display the gross pay.
    print('Gross pay: $', format(gross_pay, ',.2f), sep=''')

# Call the main function.
main()

我得到一个错误:

SyntaxError: invalid syntax. 

最后一条主线以红色突出显示。出了什么问题?你知道吗


Tags: the代码numberinputgetratemaindef
3条回答

您的print('Gross pay: $', format(gross_pay, ',.2f), sep=''')行中缺少一个引号,更不用说sep='''行不通。你基本上做到了:

print(
    "Gross pay: $",
    format(gross_pay,
    ",.2f), sep=''"
)

我想你想做的是:

print("Gross pay: ${:,.2f}".format(gross_pay, sep="'"))

python中有两种类型的字符串文字:

  • "a string"'a string'表示单行字符串。

  • """a string"""'''a string'''表示多行字符串。

您所做的是(1)无法关闭字符串,.2f,并且(2)无意中打开了一个(三重引号)多行字符串文本:

print('Gross pay: $', format(gross_pay, ',.2f), sep=''')
                  missing a close quote here ^      ^^^ Opened a string literal

解释器假定后面的所有内容都是该字符串文本的一部分。当它找不到右括号时(因为您从未关闭字符串文字),它就会抱怨。你知道吗

有两种解决方法:

  1. 转义中间引号:sep='\'')。这将阻止python将其解释为多行文字。你知道吗
  2. 使用双引号:sep="'")
print('Gross pay: $', format(gross_pay, ',.2f), sep=''')

终止字符串失败。我猜你的意思是:

print('Gross pay: $', format(gross_pay, ',.2f'), sep='\'')

或者也许

print('Gross pay: $', format(gross_pay, ',.2f'), sep="'")

相关问题 更多 >