为什么每当我使用“python”时,python都会给出错误消息-=&引用;取代+=&引用;?

为什么每当我使用“python”时,python都会给出错误消息-=&引用;取代+=&引用;?,python,python-3.x,Python,Python 3.x,令人费解的是,我可以使用+=操作符来代替-=,而不会在第12行出现问题 节目: message = input("Enter a Message: ") new_message = "" VOWELS = "aeiou" print() for letter in message: if letter.lower() not in VOWELS: new_message -= letter print("A new string has been created

令人费解的是,我可以使用
+=
操作符来代替
-=
,而不会在第12行出现问题

节目:

message = input("Enter a Message: ")

new_message = ""

VOWELS = "aeiou"
print()
for letter in message:
    if letter.lower() not in VOWELS:
        new_message -= letter



print("A new string has been created:", new_message)
print("Your message without vowels is:", new_message)

input("\n\nPress the enter key to exit.")
错误消息:

Traceback (most recent call last):
  File "C:\Python31\no vowels (from book).py", line 12, in <module>
    new_message -= letter
TypeError: unsupported operand type(s) for -=: 'str' and 'str'
回溯(最近一次呼叫最后一次):
文件“C:\Python31\no元音(来自book.py)”,第12行,在
新信息-=信函
TypeError:-=:“str”和“str”的操作数类型不受支持

编辑:如果我听起来很无知,忘了提一下,我是编程新手,字符串支持
+
+=
运算符,因为对于一对字符串,加法可以解释为串联。它们不支持
-
-=
,因为没有有意义的字符串操作可以将减法转换为

如果您使用的是数字类型,则通常支持这两种运算符


字符串还支持一些其他运算符:您可以将字符串乘以整数以重复多次。您可以使用
%
运算符来执行较旧的
printf
样式的字符串格式设置(在右侧有一个非元组参数,或一个由多个参数组成的元组)。

字符串支持
+
+=
运算符,因为对于一对字符串,加法可以解释为串联。它们不支持
-
-=
,因为没有有意义的字符串操作可以将减法转换为

如果您使用的是数字类型,则通常支持这两种运算符


字符串还支持一些其他运算符:您可以将字符串乘以整数以重复多次。您可以使用
%
运算符来执行较旧的
printf
样式的字符串格式设置(在右侧使用一个非元组参数,或者使用一个由多个参数组成的元组)。

令人困惑的是,不同的运算符执行不同的操作?为什么?你能解释一下从一个字符串中减去另一个字符串意味着什么吗?这个问题还不清楚,因为我们不知道你对它的期望是什么do@RyanHaining弦解链结?@valer我觉得这个词是“弦斩首”有什么不同<代码>+=加和
-=
减,在我看来很明显。但是,错误信息非常清楚。您试图减去字母,但
-=
不支持。为了达到你想要的结果,你必须做些别的事情。如果你想要一条没有元音的新消息,那么在构建新字符串时,只添加你需要的字母。令人费解的是,不同的操作符做不同的事情?为什么?你能解释一下从一个字符串中减去另一个字符串意味着什么吗?这个问题还不清楚,因为我们不知道你对它的期望是什么do@RyanHaining弦解链结?@valer我觉得这个词是“弦斩首”有什么不同<代码>+=加和
-=
减,在我看来很明显。但是,错误信息非常清楚。您试图减去字母,但
-=
不支持。为了达到你想要的结果,你必须做些别的事情。如果你想要一条没有元音的新消息,那么在构建新字符串时,只添加你需要的字母。好的,我现在明白了。所以基本上,你可以给一个单词加上一个字母,但是你不能从一个单词中减去一个字母。学到了一些新的东西。嗯,有一些方法可以删除字符串的某些部分,但是没有一种方法可以很好地映射到减法,所以你需要使用一些方法。尝试
str.strip
,或
str.replace
。或者使用正则表达式(如果您是编程新手,则不推荐使用正则表达式,正则表达式可能需要学习很多)。所以基本上,你可以给一个单词加上一个字母,但是你不能从一个单词中减去一个字母。学到了一些新的东西。嗯,有一些方法可以删除字符串的某些部分,但是没有一种方法可以很好地映射到减法,所以你需要使用一些方法。尝试
str.strip
,或
str.replace
。或者使用正则表达式(如果您是编程新手,则不建议使用正则表达式,正则表达式可能需要学习很多东西)。