Danil Asked:2022-07-08 22:26:10 +0000 UTC2022-07-08 22:26:10 +0000 UTC 2022-07-08 22:26:10 +0000 UTC 有必要编写一个用井号“#”替换所有字符(最后四个字符除外)的函数 772 问题是任务没有正确执行。也就是说,整个句子中只有几个字母被替换。我不太明白这与什么有关,tk。当您更改切片时,不同的字母会发生变化。 你能告诉我逻辑错误在哪里吗? def maskify(cc): for i in cc[:-4]: arr = cc.replace(i, '#') cc = ''.join(arr) return cc password = 'Hello everyone' maskify(password) python строки 2 个回答 Voted Best Answer Dmitry 2022-07-08T22:44:33Z2022-07-08T22:44:33Z 出于几个原因(为什么我们需要不必要和不必要的动作),没有必要使用替换。许多人忘记了字符串是不可变的数据类型,当调用时,replace原始字符串不会改变,它必须保存到另一个位置,或者必须覆盖现有值。您所需要的只是字符串的长度,仅此而已。功能将是这样的 def maskify(cc): grid_len = len(cc) - 4 return "#" * grid_len + cc[-4:] 首先,我计算我需要多少个格子,然后将字符串与格子乘以这个数字,然后用字符串本身替换最后四个字符。全部 >>> maskify("Hello WORLD") '#######ORLD' >>> maskify("Hello everyone") '##########yone' 只写处理每行少于四个字符 Эникейщик 2022-07-08T23:05:49Z2022-07-08T23:05:49Z 这里的逻辑错误: for i in cc[:-4]: arr = cc.replace(i, '#') 在每次迭代arr中,它都会被一个新值覆盖,并且在最后只替换最后的第五个字母(其余的都是相同的)。添加 print(arr) 你会看到到底发生了什么。 for i in cc[:-4]: arr = cc.replace(i, '#') print(arr) 而且一般来说,习惯于在查找错误时打印出变量的值。
出于几个原因(为什么我们需要不必要和不必要的动作),没有必要使用替换。许多人忘记了字符串是不可变的数据类型,当调用时,
replace原始字符串不会改变,它必须保存到另一个位置,或者必须覆盖现有值。您所需要的只是字符串的长度,仅此而已。功能将是这样的首先,我计算我需要多少个格子,然后将字符串与格子乘以这个数字,然后用字符串本身替换最后四个字符。全部
只写处理每行少于四个字符
这里的逻辑错误:
在每次迭代
arr中,它都会被一个新值覆盖,并且在最后只替换最后的第五个字母(其余的都是相同的)。添加 print(arr) 你会看到到底发生了什么。而且一般来说,习惯于在查找错误时打印出变量的值。