杀手达文西 发表于 2020-9-28 21:08:33

用字典做一个单词记录本,出现了逻辑错误(大概),求大神不吝赐教呀

本帖最后由 杀手达文西 于 2020-9-28 21:13 编辑

#words-first

import time as t
import pickle as pkl


time = t.strftime('%Y-%m-%d')
ok = 1
while ok == 1:
    new_word = input('请输入你要记录的单词(直接回车退出单词本)\n')
    f = open(r'E:/pytest/words_first.pkl','ab+')
    f.seek(0)
    wb = pkl.load(f)

    #输入已保存单词/词组
    if new_word in wb:
      print('单词已存在')

    #输入回车键,跳出循环
    elif new_word == '':
      break

    #输入新单词
    else:
      wb=(time)

    print(wb)
    print('已记录 %d 个单词/词组'%(len(wb)))

pkl.dump(wb,f)
f.close()
            

input('按任意键退出程序')
      
=======================================================================
这就是代码
然后是运行结果
======================= RESTART: E:/pytest/words_first.py ======================
请输入你要记录的单词(直接回车退出单词本)
hello
单词已存在
{'hello': '2020-09-28'}
已记录 1 个单词/词组
请输入你要记录的单词(直接回车退出单词本)
love
{'hello': '2020-09-28', 'love': '2020-09-28'}
已记录 2 个单词/词组
请输入你要记录的单词(直接回车退出单词本)
ooo
{'hello': '2020-09-28', 'ooo': '2020-09-28'}
已记录 2 个单词/词组
请输入你要记录的单词(直接回车退出单词本)

按任意键退出程序
===========================================================
新输入的单词被覆盖了,这是为啥呢?
(在这主程序之前我也写过一段代码记录单词本的第一个单词,后面的主程序就直接用的这个文件。之前那个程序和结果在下面)


import time as t
import pickle as pkl

with open(r'E:/pytest/words_first.pkl','wb') as f:
    time = t.strftime('%Y-%m-%d')
    dict1 = {'hello':(time)}
    pkl.dump(dict1,f)

with open(r'E:/pytest/words_first.pkl','rb') as f:
    n = pkl.load(f)
    for k,v in n.items():
      print('%s    %s'%(k,v))
      
==============================================================
运行结果:
hello    2020-09-28

最后求求大神帮帮忙啦!{:10_254:}{:10_254:}{:10_254:}

疾风怪盗 发表于 2020-9-28 21:23:22

运行后,words_first.pkl里面是空的,直接就报错了。。。。。。。
这个里面的内容是怎么存储的?

kylin121380 发表于 2020-9-28 22:05:02

本帖最后由 kylin121380 于 2020-9-28 22:13 编辑

import time as t
import pickle as pkl
import os

time = t.strftime('%Y-%m-%d')
ok = 1
while ok:
    new_word = input('请输入你要记录的单词(直接回车退出单词本)\n')
    try:
      if 'words_first.txt' not in os.listdir('.'):
            with open(r'words_first.txt', 'wb') as f:
                pass
      with open(r'words_first.txt', 'rb') as f:
            f.seek(0)
            wb = pkl.load(f)
            print(wb)
      # 输入已保存单词/词组
      if new_word in wb:
            print('单词已存在')

      # 输入回车键,跳出循环
      elif new_word == 'q':
            break
      # 输入新单词
      else:
            wb = (time)
            with open(r'words_first.txt', 'wb') as f:
                pkl.dump(wb, f)

    except EOFError:
      with open(r'words_first.txt', 'wb') as f:
            dict1 = {new_word: (time)}
            pkl.dump(dict1, f)
页: [1]
查看完整版本: 用字典做一个单词记录本,出现了逻辑错误(大概),求大神不吝赐教呀