我正在编写代码,但没有得到所需的输出。如果有人能帮我指出我做错了什么,那就太好了。我的代码是:
shift = input()
word_original = input()
corrected_word = ""
keyboard_characters = "qwertyuiopasdfghjkl;zxcvbnm,./"
if shift == "R":
for i in range(len(shift)-1):
ind = keyboard_characters.find(shift[i]) + 1
corrected_word = corrected_word + keyboard_characters[ind]
else:
for i in range(len(shift)-1):
ind = keyboard_characters.find(shift[i]) - 1
corrected_word = corrected_word + keyboard_characters[ind]
print(len(corrected_word))
在这里,根据我的说法,我应该得到正确的_单词,但它给出的长度是0,也就是说,它正是我最初定义的,也就是说,空字符串
您的问题是,您的循环在
for i in range(len(shift)-1):
上运行,您需要使用for i in range(len(word_original )-1):
这里不需要通过索引对字符串进行迭代,只需
但是如果您的文本包含
'/'
,这将使您超出界限错误,因为您的索引现在超出了keyboard_characters
长度。此外,您不处理不存在的映射(f.e.空格),因为find将返回一个可能不正确的值修复代码:
字符串是不可变的。通过使用
s = s + "..."
,您正在创建大量的一次性strings
,这需要性能。改为使用list
并在其后使用''.join(mylist)
来获取字符串解决此任务的更好方法:
您尝试编写的代码已经有了一个使用python的解决方案—对于替换某些内容,
dict
非常好,因为您可以将一个键映射到一个值。对于字符串,甚至还有一些方便的函数为您构建dict:阅读:
如果查找中不存在字符,则按原样使用(空格f.e.)
输出:
相关问题 更多 >
编程相关推荐