我正在尝试编写一个字典应用程序,包含用户输入字,返回定义。此外,如果输入错误,程序会循环输入3个最接近的匹配项并询问用户是否是他们的意思。我的控制流未正确运行,因为'y'不会突破循环或返回定义。我没有收到任何错误消息。有人能告诉我如何解决?如果3个建议都不是用户的意思,我还能够返回“没有接近的匹配”。
因此在函数中有3个场景:单词,非单词与紧密匹配(可能是拼写错误),非单词没有紧密匹配(可能是随机输入)。这是我有的第二个场景问题。
key=input('Enter the word: ')
key=key.lower()
dym=get_close_matches(key,data.keys())
def find_meaning():
if key in data:
return data[key]
elif len(dym)>0:
for i in dym:
choice=input('Did you mean '+i + ' Y/N ')
if choice=='Y' or 'y':
break
return data[i]
elif choice=='N' or 'n':
continue
else:
return 'Word does not exist!'
print(find_meaning())
从上面的脚本中删除'break'后,我在运行时得到了这个输出:
Tokas-MBP:Python_Mega_Course tzhu9$ python3 dictionary.py
Enter the word: rainn
Did you mean rain Y/N n
['Precipitation in the form of liquid water drops with diameters greater than 0.5 millimetre
s.', 'To fall from the clouds in drops of water.']
我打算看到的结果是程序会问第二个最接近的匹配'你是不是意味着',而不是输出我不想要问的单词的定义。
答案 0 :(得分:0)
试试这个:
if choice=='Y' or choice=='y':
break
return data[i]
elif choice=='N' or choice=='n':
continue
我不明白为什么如果你要回来那么休息。