Crossin的编程教室

标题: 交作业:【每日一坑】记账本 [打印本页]

作者: FERRYMAN    时间: 2021-2-15 19:38
标题: 交作业:【每日一坑】记账本
希望老师评价一下,欢迎各种建议
  1. from datetime import date
  2. from re import findall

  3. def keep_ac():
  4.     global ac_cont
  5.     amount = input('请输入收支情况(类似于+100,-50)\n')
  6.     things = input('请输入收支名目\n')
  7.     while True:
  8.         print('请问此次收支的时间是今天吗?')
  9.         input_w = '如果是,请按回车;'
  10.         input_w += '如果不是,请输入时间(类似于2000-01-01)\n'
  11.         time = input(input_w)
  12.         break
  13.     if time == '':
  14.         time = date.today()
  15.     add_w = '{}  {}  {}'.format(time,amount,things)
  16.     balance = int((findall(r'-?\d+',ac_cont[-1]))[0])
  17.     balance_sen = '余额:' + str(balance + int(amount)) + '元'
  18.     del ac_cont[-1]
  19.     ac_cont.append(add_w)
  20.     ac_cont.append('\n'+balance_sen)
  21.     ac_wri = open('C:\\Users\\ac_book.txt','w',encoding = 'utf-8')
  22.     ac_wri.writelines(ac_cont)
  23.     ac_wri.close()

  24. def ff_bala():
  25.     balance = ac_cont[-1]
  26.     print(balance)

  27. def detail():
  28.     de = ac_cont[:-1]
  29.     for d in de:
  30.         print(d,end = '')
  31.     print()

  32. print('本记账本有以下三种功能供您使用:')
  33. print('1.记账 2.查余额 3.查看收支明细')
  34. while True:
  35.     global ac_cont
  36.     ac_book = open('C:\\Users\\ac_book.txt',encoding = 'utf-8')
  37.     ac_cont = ac_book.readlines()
  38.     ac_book.close()
  39.     function = input('\n请输入数字(1~3)以使用对应功能,要退出时请按回车:\n')
  40.     if function == '1':
  41.         keep_ac()
  42.     elif function == '2':
  43.         ff_bala()
  44.     elif function == '3':
  45.         detail()
  46.     elif function == '':
  47.         break
  48.     else:
  49.         print('输入无效哦!')

复制代码

作者: crossin先生    时间: 2021-2-16 23:08
一开始用global全局参数没问题,但建议以后学会用参数和返回值来实现变量的传递。如果代码复杂了,全用global会很乱
作者: FERRYMAN    时间: 2021-2-17 11:21
crossin先生 发表于 2021-2-16 23:08
一开始用global全局参数没问题,但建议以后学会用参数和返回值来实现变量的传递。如果代码复杂了,全用glob ...

哦!就是说在keep_ac那边加上一个形参ac_cont,然后在while循环的if语句那个keep_ac的括号里填上实参ac_cont是吗?
作者: crossin先生    时间: 2021-2-17 23:46
FERRYMAN 发表于 2021-2-17 11:21
哦!就是说在keep_ac那边加上一个形参ac_cont,然后在while循环的if语句那个keep_ac的括号里填上实参ac_c ...

差不多这意思
函数那几课的内容和练习看下
作者: FERRYMAN    时间: 2021-2-18 22:13
crossin先生 发表于 2021-2-17 23:46
差不多这意思
函数那几课的内容和练习看下

好的,谢谢老师




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5