为什么我的程序受到注释的干扰?

问题描述

我们在学校的任务是在代码底部使用以下代码添加该程序的测试示例:

#example

"""

<insert example of you running the code>

"""

但是当我这样做时,我得到了错误。我从来没有在任何其他代码上得到它,仅在这一个代码上?

C:\Users\David>C:\Users\David\Desktop\IN1900\uke38\qerror.py 1
  File "C:\Users\David\Desktop\IN1900\uke38\qerror.py",line 22
    """
    ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 24-25: truncated \UXXXXXXXX escape

C:\Users\David>

我的代码如下:

from math import sqrt
import sys

a=float(sys.argv[1])
b=float(sys.argv[2])
c=float(sys.argv[3])
d=(b**2)-(4*a*c)
x1=((-b+sqrt(d))/(2*a))
x2=((-b-sqrt(d))/(2*a))

print(f'The quadratic formula with used values gives two roots {x1:.1f} and {x2:.1f}')

#example
"""
#Fra command prompt:
#C:\Users\David>C:\Users\David\Desktop\IN1900\uke38\quadratic_roots_cml.py 1 0 -1
#The quadratic formula with used values gives two roots 1.0 and -1.0
#(koden funker ikke på et eller annet magisk vis når jeg bruker
"""

解决方法

您的一部分字符串文字被解释为转义的unicode字符。这样的转义序列以default-src 'self';开始。最简单的解决方法是在双引号的开头三元组前面放置\U。这样可以防止对文本进行任何形式的转义处理:

r

这比添加一堆额外的斜杠要容易得多,并且也不会改变文本的可读性。

这是Python 3文档所说的“原始字符串”:

字符串和字节文字都可以选择加前缀 字母“ r”或“ R”;这样的字符串称为原始字符串 作为文字字符的反斜杠。结果,在字符串文字中, 原始字符串中的'\ U'和'\ u'转义符未得到特殊处理。给定 Python 2.x的原始unicode文字的行为与Python不同 3.x的'ur'语法不受支持。

,

在具有路径的行上使用双斜杠,如下所示:

"""
"""
#Fra command prompt:
#C:\\Users\\David>C:\\Users\\David\\Desktop\\IN1900\\uke38\\quadratic_roots_cml.py 1 0 -1
#The quadratic formula with used values gives two roots 1.0 and -1.0
#(koden funker ikke på et eller annet magisk vis når jeg bruker
"""
"""
,

\U\u中的\Users\uke38被解释为Unicode转义。将反斜杠加倍。

#C:\\Users\David>C:\\Users\David\Desktop\IN1900\\uke38\quadratic_roots_cml.py 1 0 -1

或者,请注意,您在以#开头的行中有注释。因此,不需要三引号。

...
print(f'The quadratic formula with used values gives two roots {x1:.1f} and {x2:.1f}')

#example
#Fra command prompt:
#C:\Users\David>C:\Users\David\Desktop\IN1900\uke38\quadratic_roots_cml.py 1 0 -1
#The quadratic formula with used values gives two roots 1.0 and -1.0
#(koden funker ikke på et eller annet magisk vis når jeg bruker