[英]How can I solve this 'substring not found' error?
所以,我希望用户输入他的名字和姓氏,然后这两个词将每隔一个字母相互替换。
def translate(ime,prez):
translated_i = ""
translated_p = ""
if len(ime) >= len(prez):
for letter in prez:
if prez.index(letter) != 0:
translated_p = translated_p + ime[prez.index(letter)]
if prez.index(letter) >= len(prez)-1:
translated_i = translated_i + ime[prez.index(letter):]
else:
translated_i = translated_i + prez[ime.index(letter)]
else:
translated_p = translated_p + letter
translated_i = translated_i + ime[prez.index(letter)]
elif len(prez) > len(ime):
for letter in ime:
if ime.index(letter) != 0:
translated_i = translated_i + prez[ime.index(letter)]
if prez.index(letter) >= len(prez)-1:
translated_p = translated_p + prez[ime.index(letter):]
else:
translated_p = translated_p + ime[prez.index(letter)]
else:
translated_i = translated_i + letter
translated_p = translated_p + prez[ime.index(letter)]
return translated_i + " " + translated_p
x = input("Name: ")
y = input("Last name: ")
print(translate(x,y))
但是有一个错误说:'ValueError: substring not found'
根据文档,如果未找到子字符串, index
函数会引发ValueError
。 因此,您可以将代码包装在try/except
块中,而不是检查if ime.index(letter) != 0
。 例如:
try:
letter_index = ime.index(letter)
# your logic if substring found
except ValueError as ex:
# logic if substring not found
它为我工作
代码:
def translate(ime,prez):
translated_i = ""
translated_p = ""
if len(ime) >= len(prez):
for letter in prez:
if prez.index(letter) != 0:
translated_p = translated_p + ime[prez.index(letter)]
if prez.index(letter) >= len(prez)-1:
translated_i = translated_i + ime[prez.index(letter):]
else:
translated_i = translated_i + prez[ime.index(letter)]
else:
translated_p = translated_p + letter
translated_i = translated_i + ime[prez.index(letter)]
elif len(prez) > len(ime):
for letter in ime:
if ime.index(letter) != 0:
translated_i = translated_i + prez[ime.index(letter)]
if prez.index(letter) >= len(prez)-1:
translated_p = translated_p + prez[ime.index(letter):]
else:
translated_p = translated_p + ime[prez.index(letter)]
else:
translated_i = translated_i + letter
translated_p = translated_p + prez[ime.index(letter)]
return translated_i + " " + translated_p
x = input("Name: ")
y = input("Last name: ")
print(translate(x,y))
我复制粘贴了您的代码,除了缩进错误之外,一切正常。 我建议您将缩进修复为:
def translate(ime,prez):
translated_i = ""
translated_p = ""
if len(ime) >= len(prez):
for letter in prez:
if prez.index(letter) != 0:
translated_p = translated_p + ime[prez.index(letter)]
if prez.index(letter) >= len(prez)-1:
translated_i = translated_i + ime[prez.index(letter):]
else:
translated_i = translated_i + prez[ime.index(letter)]
else:
translated_p = translated_p + letter
translated_i = translated_i + ime[prez.index(letter)]
elif len(prez) > len(ime):
for letter in ime:
if ime.index(letter) != 0:
translated_i = translated_i + prez[ime.index(letter)]
if prez.index(letter) >= len(prez)-1:
translated_p = translated_p + prez[ime.index(letter):]
else:
translated_p = translated_p + ime[prez.index(letter)]
else:
translated_i = translated_i + letter
translated_p = translated_p + prez[ime.index(letter)]
return translated_i + " " + translated_p
x = input("Name: ")
y = input("Last name: ")
print(translate(x,y))
并将其复制粘贴到另一个文件中。 如果您遇到另一个错误并且您使用的不是 IDLE 的文本编辑器,请尝试 IDLE 中的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.