设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 16845|回复: 4
打印 上一主题 下一主题

交作业:【每日一坑】记账本

[复制链接]

3

主题

1

好友

111

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2021-2-15 19:38:03 |只看该作者 |倒序浏览
希望老师评价一下,欢迎各种建议
  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('输入无效哦!')

复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2021-2-16 23:08:41 |只看该作者
一开始用global全局参数没问题,但建议以后学会用参数和返回值来实现变量的传递。如果代码复杂了,全用global会很乱
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

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

哦!就是说在keep_ac那边加上一个形参ac_cont,然后在while循环的if语句那个keep_ac的括号里填上实参ac_cont是吗?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2021-2-17 23:46:57 |只看该作者
FERRYMAN 发表于 2021-2-17 11:21
哦!就是说在keep_ac那边加上一个形参ac_cont,然后在while循环的if语句那个keep_ac的括号里填上实参ac_c ...

差不多这意思
函数那几课的内容和练习看下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

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

好的,谢谢老师
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-21 20:38 , Processed in 0.022725 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部