我在任务中收到以下选择题
下面的代码是哪个答案?
A。冷
B。 CORD
C。 TypeError:“ str”对象不支持项目分配
D。 ”
str1 = "COLD"
for letter in str1:
if letter == "L":
letter == "R"
print(str1)
我不明白为什么它可能是A(冷) 为什么不是B(CORD)或c(类型错误)
答案 0 :(得分:1)
当您遍历str1
时,letter
实际上只是str1
中每个字符的副本。将其视为通过值传递与使用C ++之类的引用传递而不是引用传递之间的区别。
修改letter
时,实际上并不是在修改基础字符串str1
。 letter
和str1
中的相应字符未链接。 (更不用说字符串是不可变的。)
此外,请注意,问题是使用==
而不是=
,因此您实际上根本没有进行任何更改。
答案 1 :(得分:0)
正确的答案是COLD,因为编写的程序根本不会更改str1。实际上,该程序无法通过以下三种方式进行操作:
1)在python中,字符串是不可变的。为它们分配值后就无法更改。您必须制作一个完全不同的字符串,并通过遍历str1中的每个字符来建立其值,并将条件字母分配作为该过程的一部分。您不能直接更改str1。
2)所示程序违反了python的缩进规则-不应缩进“ for str1:中的字母”,并且当您尝试运行python时,它将抛出“ IndentationError:意外缩进”。您是否尝试运行它?
3)“如果字母==“ L”:“与说“如果字母是” L“相同,但“字母==” R“在这种情况下完全没有意义。当您使用“ ==”时,您正在测试一个值,而不是分配一个值。为了分配值,您可以使用“ =”(单个等号)。
这是一个很好的考试问题,因为除非您真的了解python的一些知识,否则它看起来应该像程序应该做的那样。也许您不能在回答考试问题之前尝试代码,但一定要使用python REPL尝试一下。它给您即时反馈。干杯!