Python 编码重复的单词在代码中不起作用?
我是一名学习者,我在代码战中做了一个字符编码练习 我的代码在测试“(“and”)和随机字符时失败Python 编码重复的单词在代码中不起作用?,python,python-3.x,string,Python,Python 3.x,String,我是一名学习者,我在代码战中做了一个字符编码练习 我的代码在测试“(“and”)和随机字符时失败 def duplicate_encode(word): #your code here word = word.lower() for ch in word: if word.count(ch) == 1: word = word.replace(ch, "(") else:
def duplicate_encode(word):
#your code here
word = word.lower()
for ch in word:
if word.count(ch) == 1:
word = word.replace(ch, "(")
else:
word = word.replace(ch, ")")
return word
有人能帮忙吗
问题陈述如下:
本练习的目标是将字符串转换为新字符串,其中新字符串中的每个字符都是“(“如果该字符在原始字符串中仅出现一次,或者”)(如果该字符在原始字符串中出现多次)。确定字符是否重复时忽略大小写。例如输入:
HaO@lknFmcxzI(RHJ
当您的迭代到达(
)时,它将计算字符串中(
的数量,包括一些不在原始字符串中的,因为您的函数将新的(
放入字符串中
此外,如果您的函数使用了replace(ch,…)
,并且ch
等于(
或)
,则您正在更改迄今为止添加的所有括号
避免这种情况的一种方法是,在查看字符串时不要一直更改字符串,而是建立一个新的单独字符序列
def duplicate_encode(字):
word=word.lower()
新=[]
对于ch in word:
如果字计数(ch)=1:
new.append(“(”)
其他:
new.append(')')
返回“”。加入(新)
您评论中的一行:
''.join('(' if word.lower().count(ch) == 1 else ')' for ch in word.lower())
使用生成器表达式。它遍历字符串(转换为小写),并为每个字符串生成
(
或)
(取决于计数),然后在最后,将所有字符合并到一个新字符串。在哪个输入字符串中失败?例如,对于括号或随机字符字符串HaO@lknFmcxzI(RHJYou非常接近。我对代码战进行了测试,但19次测试都失败了,其中一次是:lPFwRan)wbuHJxb!vJTPdl我不太习惯一行程序,但如果您能向我解释一下,这是我在git hub上找到的一些解决方案,可能是return'.join(''If word.lower().count(ch)=1 else'),对于ch in word.lower()。
我已经修改了我的答案,并添加了对一行程序的描述。