如何更改字符串中的字母

时间:2019-04-07 05:11:03

标签: python

我在任务中收到以下选择题

下面的代码是哪个答案?

A。冷

B。 CORD

C。 TypeError:“ str”对象不支持项目分配

D。 ”

str1 = "COLD"
    for letter in str1:
        if letter == "L":
            letter == "R"


print(str1)

我不明白为什么它可能是A(冷) 为什么不是B(CORD)或c(类型错误)

2 个答案:

答案 0 :(得分:1)

当您遍历str1时,letter实际上只是str1中每个字符的副本。将其视为通过值传递与使用C ++之类的引用传递而不是引用传递之间的区别。

修改letter时,实际上并不是在修改基础字符串str1letterstr1中的相应字符未链接。 (更不用说字符串是不可变的。)

此外,请注意,问题是使用==而不是=,因此您实际上根本没有进行任何更改。

答案 1 :(得分:0)

正确的答案是COLD,因为编写的程序根本不会更改str1。实际上,该程序无法通过以下三种方式进行操作:

1)在python中,字符串是不可变的。为它们分配值后就无法更改。您必须制作一个完全不同的字符串,并通过遍历str1中的每个字符来建立其值,并将条件字母分配作为该过程的一部分。您不能直接更改str1。

2)所示程序违反了python的缩进规则-不应缩进“ for str1:中的字母”,并且当您尝试运行python时,它将抛出“ IndentationError:意外缩进”。您是否尝试运行它?

3)“如果字母==“ L”:“与说“如果字母” L“相同,但“字母==” R“在这种情况下完全没有意义。当您使用“ ==”时,您正在测试一个值,而不是分配一个值。为了分配值,您可以使用“ =”(单个等号)。

这是一个很好的考试问题,因为除非您真的了解python的一些知识,否则它看起来应该像程序应该做的那样。也许您不能在回答考试问题之前尝试代码,但一定要使用python REPL尝试一下。它给您即时反馈。干杯!