我有以下代码:
secretWord = 'hello'
letter = 'l'
tag = '_ '*len(secretWord) # tag = '_ _ _ _ _'
for m in rage(len(secretWord)):
if letter == secretWord[m] and m == 0:
tag.replace(tag[m],letter)
else:
tag.replace(tag[m+2],letter)
我想要的输出是tag = '_ _ l l _'
由于某些原因,我根本无法使这个工作,即使我的逻辑是完全正确的。我有一个for循环遍历secretWord中的每个字符,如果字母在for循环中等于那个特定的字符,那么就用那个字母替换tag中的适当位置,并保持所有其他空格(''u')相同。在
让
tag
是已知字符或空白字符的列表。 使用' '.join(tag)
在需要时生成显示的表单。在以下是一些解释此解决方案中使用的工具的链接:
[expr for variable in iterable]
是list comprehension。在letter if m == letter else t
是一个conditional expression。在tag
。在字符串在Python中是不可变的,不能修改它们。这就是您的
tag
没有更新的原因。在Python有一个非常奇怪但很有用的数据模型。有些类型是可变的(例如列表和字典),有些是不可变的(例如字符串和数字)。在
字符串实例的
Python和非托管编程语言(如C/C++)之间的较大差异之一是,Python变量总是引用值,而C/C++变量是值的实际存储。在replace()
函数(实际上所有其他字符串函数)无法修改字符串。相反,它返回原始字符串的新修改版本。在奇怪的是,从python开始时,这在某种程度上可以忽略,因为某些算法的语法是相同的。比如:
Python和C/C++中的产量^ ^ {CD3>}和^ {CD4>}。对于C/C++,这是显而易见的,但是在Python中,完全不明显的事情发生了。在
在python中,
s
首先引用字符串"Hello"
(不是:s
包含字符串"Hello"
)。然后字符串Hello
和字符串World
被连接起来,然后引用s
被重置为指向新的字符串"Hello World"
。在下一件事是
a = b
总是意味着:复制引用。它永远不会复制值。对于字符串和整数,它在实践中并没有多大区别,但对于更复杂的类型,它有很大的区别。但现在这可能超过了这个问题。在相关问题 更多 >
编程相关推荐