在完成背单词程序时,这个切片报错,还没解决

img

img


在网上搜了还是没能解决问题,txt文档中英语和汉语都有空格,不知道为什么还是报错

  您还不大会调试代码吧。最简单的办法就是用print() or input() 查看您的变量,是不是您要的样子,才可以最终解决问题。
我的示例代码没有做成循环查词,您可以试着改改。

  • 代码运行效果截屏图片

    img


    img


    img


    img


    img


    img


    img


    img

  • Python 代码
#!/sur/bin/nve python
# coding: utf-8

clear = '\033[2J' # Linux 下的清屏字符串。
mypath = '/sdcard/Documents/'
vocab = {} # 单词字典初值。

for line in open(f"{mypath}乱序单词本.txt").read().split('\n'): # 读取文本重成单词字典。
    line = line.split() # 以空格拆分读取的行。
    vocab[line[0]] = line[1:] # 以单词为key 追加入字典。


#print(vocab) # 查看单词字典。调试用语句。


def ch_to_en(): # 单词字典的作用域是全局。她是全局变量,可以直接引用。
    ''' 中译英 '''
    ch = input(f"{clear}\n{' 汉译英 ':~^47}\n\n{'输入中文:':>12}").strip() # 用ch接收键盘录入并用str.strip()方法去除前后空格。
    chars = "".join(map(lambda x: ''.join(x), vocab.values())) # 提取中文释义拼接成字符串。
    words = vocab.keys() # 提取词典中收录的英文单词。
    #input((chars, words)) 调试用语句。
    if ch not in chars: # 报错。
        print(f"{clear}{' 汉译英 ':~^47}\n\n{f' 词典中还没有收录“{ch}”释义的单词 ':~^35}\n")
    else: # 翻译。
        
        for word in words:
            
            if ch in ''.join(vocab[word]):
                print(f"{clear}{' 汉译英 ':~^47}\n\n{'':>12}{ch}”的英译是:{word}\n\n{'':>12}中文释义:{' '.join(vocab[word])}\n\n{'':~^50}\n")


if __name__ == '__main__':
    ch_to_en() # 调用汉译英。

  您从单词文本读取文本生成字典时,由于您是中译英,您应该用中文释义做key,而您却用英文单词做key。还有就是从键盘输入,肯定不是中文词义不完整的,您得想法处理下。这样修改之后,会更方便查找。
  我的代码示例沿用了您构造的英文词典结构,查词我能想到的“最好”办法就是遍历所有收录词典中的单词,有其中文释义,打印目录单词及中文释义。这完全没用上字典用key查value 的快捷特性,如果词典够大,我的示例代码会很慢的。


我有未“完工”的学习笔记——