JilltT 发表于 2021-7-8 11:01:44

【Python038作业】打卡挑战

菜鸟一个
写了个很简陋的打卡挑战,根据每天完成任务的时间自动升级(这不是放假了嘛,也算是督促自己)
日志存放在自己选的txt文档
当然,具体升级条件和打印内容可以自己更改

import easygui as g
import time

g.msgbox('欢迎使用坚持打卡系统')

count = 1
fields = []

while 1:
    target = g.enterbox(msg = '请输入今天完成的第{}个任务(输入“结束”停止录入)'.format(count),title = '任务清单录入')
    if target == '结束':
      break
    if target == '':#检测是否为空
      g.msgbox('您录入的任务不能为空')
      continue
    else:
      count += 1
      fields.append(target)
#完成任务的录入

title = '任务清单'
msg = '请输入每一项任务坚持的时间(单位为小时,请输入阿拉伯数字)'
fields_values = g.multenterbox(msg,title,fields = fields)

while 1:#数据不能为空且要为数字
    if fields_values == None:
      break
    errmsg = ''
    for i in range(len(fields)):
      try:
            int(fields_values.strip())
      except ValueError:
            errmsg += '{}录入数据格式有误,请重新输入\n'.format(fields)
    if errmsg == '':
      break
    fields_values = g.multenterbox(errmsg,title,fields = fields,values = fields_values)
            
#建立任务清单
dict_target = dict(zip(fields,fields_values))

g.msgbox('请选择一个文本文件保存您的打卡记录')
file_txt = g.fileopenbox()#利用txt文档记录


def check(file_txt):
    with open(file_txt) as f1:
      content = list(f1)
      if content == []:
            level = 1
            return level
      else:
            return content[-1][-1]#返回上一次等级
            
               
def cul_level():
    level = check(file_txt)
    with open(file_txt,'a') as f:
      f.write('\n{}\n'.format(time.asctime(time.localtime(time.time()))))
      f.write('任务记录(L{}):'.format(level))
      f.write('\n')
      sum_exp = 0
      for each_item in dict_target.items():
            f.write('{}{}小时\n'.format(each_item,each_item))
            exp = int(each_item)*10#每完成一小时经验加十
            sum_exp += exp
      new_level = int(level) + sum_exp // 50
      if new_level > int(level):
            f.write('等级升至L{}'.format(new_level))
      else:
            f.write('等级为L{}'.format(level))
            #经验升级规则以及日志录入


cul_level()


python_song 发表于 2021-7-8 18:05:17

不错
页: [1]
查看完整版本: 【Python038作业】打卡挑战