用python编写ATM+购物车程序

购物车程序要求:

1.允许用户根据商品编号购买商品。

2.用户选择商品后,检测余额是否充足,够就直接扣款,不够就提醒。

3.可随时推出,退出时打印以购买商品,购买商品数量及余额。

ATM程序要求:

1.管理账户,添加账户保存到文件。

2.还款、查余额、提款、冻结账户。

3.从购物车收到付款要求时付款。

程序目录结构:

ATM主程序:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # Author:James Tao
 4 
 5 import os
 6 import sys
 7 import pickle
 8 
 9 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
10 
11 while True:
12     menu=input('''
13 请选择功能:
14 1.注册输入注册
15 2.登陆输入登陆
16 3.支付输入支付
17 4.还款输入还款
18 5.提款输入提款
19 6.冻结账户输入冻结
20 输入其它退出
21     ''')
22 
23     if menu=='注册':
24 
25         #注册
26         from atmfunction import register
27         register()
28 
29     elif menu=='登陆':
30         from atmfunction import login
31 
32         login()
33 
34 
35     elif menu=='支付':
36 
37         r_money = open(BASE_DIR + '\' + 'docs' + '\' + 'money' + '.txt', 'rb')
38         list_money = pickle.load(r_money)
39         r_money.close()
40 
41         money=list_money[0]
42         print('您需要支付的金额为:',money)
43 
44         from atmfunction import pay
45         pay(money)
46 
47         exit()
48 
49     elif menu=='还款':
50 
51         repaymoney=int(input('请输入您要还款的金额:'))
52 
53         from atmfunction import repay
54 
55         repay(repaymoney)
56 
57     elif menu=='提款':
58 
59         drawmoney=int(input('请输入提款金额:'))
60 
61         from atmfunction import draw
62 
63         draw(drawmoney)
64 
65     elif menu=='冻结':
66 
67         from atmfunction import freeze
68 
69         freeze()
70 
71 
72     else:
73         exit()

ATM功能程序:

  1 #!/usr/bin/env python
  2 # -*- coding:utf-8 -*-
  3 # Author:James Tao
  4 
  5 import os
  6 import sys
  7 import pickle
  8 
  9 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 10 
 11 
 12 #注册装饰器
 13 def register_wrapper(func):
 14     def wrapper(*args, **kwargs):
 15 
 16         atmuser = input('请输入用户名(由字母数字下划线组成):')
 17         atmpasswd = input('请输入密码(由字母数字下划线组成):')
 18 
 19         # 将用户密码存入字典
 20         atm_passwd = {}
 21         atm_passwd[atmuser] = atmpasswd
 22 
 23         # 将用户密码字典写入文件
 24         w_atm_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'wb')
 25         pickle.dump(atm_passwd, w_atm_passwd)
 26         w_atm_passwd.close()
 27 
 28         # 将用户信息存入字典
 29         atmuser_info = {}
 30         atmuser_info['balance'] = 50000
 31 
 32         print('''用户{_atmuser}恭喜您注册成功,您的信用卡账户余额为{_balance}。
 33                     '''.format(_atmuser=atmuser, _balance=atmuser_info['balance']))
 34 
 35         # 将用户信息字典写入文件
 36         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
 37         pickle.dump(atmuser_info, w_atmuser_info)
 38         w_atmuser_info.close()
 39 
 40     return wrapper
 41 
 42 @register_wrapper
 43 def register():
 44     pass
 45 
 46 
 47 #登陆装饰器
 48 def login_wrapper(func):
 49     def wrapper(*args,**kwargs):
 50 
 51         atmuser = input('请输入用户名:')
 52         atmpasswd = input('请输入密码:')
 53 
 54         #判断账户是否被冻结
 55         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
 56 
 57             # 读取冻结账户文件内账户
 58             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
 59             freezeuser = pickle.load(r_freezeuser)
 60             r_freezeuser.close()
 61 
 62             if atmuser in freezeuser:
 63                 print('该账户已被冻结')
 64                 return
 65 
 66 
 67         # 读出用户信息,登陆密码
 68         r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
 69         read_atmuser_passwd = pickle.load(r_atmuser_passwd)
 70         r_atmuser_passwd.close()
 71 
 72         # 判断输入的账号是否存在密码是否正确
 73         if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
 74             # 读出用户信息,显示账户余额
 75             r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
 76             read_atmuser_info = pickle.load(r_atmuser_info)
 77             r_atmuser_info.close()
 78 
 79             # 显示账户余额
 80             print('''用户{_atmuser}登陆成功,您的账户余额为{_balance}。
 81                 '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance']))
 82 
 83 
 84     return wrapper
 85 
 86 @login_wrapper
 87 def login():
 88     pass
 89 
 90 #支付
 91 def pay_wrapper(func):
 92     def wrapper(*args,**kwargs):
 93 
 94         print('您好请先登录atm!')
 95         atmuser = input('请输入用户名:')
 96         atmpasswd = input('请输入密码:')
 97 
 98         # 判断账户是否被冻结
 99         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
100 
101             # 读取冻结账户文件内账户
102             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
103             freezeuser = pickle.load(r_freezeuser)
104             r_freezeuser.close()
105 
106             if atmuser in freezeuser:
107                 print('该账户已被冻结')
108                 return
109 
110 
111 
112         #验证用户是否存在
113         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
114 
115 
116             # 读出用户信息,登陆密码
117             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
118             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
119             r_atmuser_passwd.close()
120 
121             # 判断输入的账号是否存在密码是否正确
122             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
123                 # 读出用户信息,显示账户余额
124                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
125                 read_atmuser_info = pickle.load(r_atmuser_info)
126                 r_atmuser_info.close()
127 
128                 # 显示账户余额
129                 print('''用户{_atmuser}登陆成功,您的账户余额为{_balance}。
130                 '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance']))
131 
132                 paymoney = args[0]
133                 print('您需要付款的金额为:', paymoney)
134                 if paymoney <= read_atmuser_info['balance']:
135 
136                     pay_or_out = input('确定付款请输入Y:')
137                     if pay_or_out=='Y':
138 
139                         #计算余额
140                         balance=read_atmuser_info['balance']-paymoney
141 
142                         # 将用户信息存入字典
143                         atmuser_info = {}
144                         atmuser_info['balance'] = balance
145 
146                         #存入文件
147                         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
148                         pickle.dump(atmuser_info, w_atmuser_info)
149                         w_atmuser_info.close()
150 
151                         #支付成功更改支付成功中间文件
152                         pay_accomplished=['accomplished']
153                         w_pay_accomplished=open(BASE_DIR + '\' + 'docs' + '\' + 'pay_accomplish' + '.txt', 'wb')
154                         pickle.dump(pay_accomplished, w_pay_accomplished)
155                         w_pay_accomplished.close()
156 
157                     else:
158                         print('验证失败')
159 
160                 else:
161                     print('余额不足')
162 
163             else:
164                 print('密码错误')
165 
166         else:
167             print('用户不存在')
168 
169     return wrapper
170 
171 @pay_wrapper
172 def pay():
173     pass
174 
175 #还款
176 
177 def repay_wrapper(func):
178     def wrapper(*args,**kwargs):
179         print('您好请先登录atm!')
180         atmuser = input('请输入用户名:')
181         atmpasswd = input('请输入密码:')
182 
183         # 判断账户是否被冻结
184         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
185 
186             # 读取冻结账户文件内账户
187             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
188             freezeuser = pickle.load(r_freezeuser)
189             r_freezeuser.close()
190 
191             if atmuser in freezeuser:
192                 print('该账户已被冻结')
193                 return
194 
195         # 验证用户是否存在
196         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
197 
198             # 读出用户信息,登陆密码
199             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
200             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
201             r_atmuser_passwd.close()
202 
203             # 判断输入的账号是否存在密码是否正确
204             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
205 
206                 # 读出用户信息,显示账户余额
207                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
208                 read_atmuser_info = pickle.load(r_atmuser_info)
209                 r_atmuser_info.close()
210 
211                 # 显示账户余额和需还款金额
212                 need_repaymoney=50000-read_atmuser_info['balance']
213                 print('''用户{_atmuser}登陆成功,您的账户可用余额为{_balance},需还款金额为{_needrepaymoney}。
214                         '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance'],_needrepaymoney=need_repaymoney))
215 
216 
217                 repaymoney = args[0]
218                 print('您将要还款的金额为:', repaymoney)
219                 if repaymoney <= need_repaymoney:
220 
221                     repay_or_out = input('确定还款请输入Y:')
222                     if repay_or_out == 'Y':
223 
224                         # 计算余额
225                         balance = read_atmuser_info['balance'] + repaymoney
226 
227                         # 将用户信息存入字典
228                         atmuser_info = {}
229                         atmuser_info['balance'] = balance
230 
231                         # 存入文件
232                         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
233                         pickle.dump(atmuser_info, w_atmuser_info)
234                         w_atmuser_info.close()
235 
236                         print('还款成功!')
237 
238                     else:
239                         print('验证失败')
240 
241                 else:
242                     print('超出需还款金额')
243 
244             else:
245                 print('密码错误')
246 
247         else:
248             print('用户不存在')
249 
250 
251 
252 
253     return wrapper
254 
255 @repay_wrapper
256 def repay():
257     pass
258 
259 #提款
260 def draw_wrapper(func):
261     def wrapper(*args,**kwargs):
262         print('您好请先登录atm!')
263         atmuser = input('请输入用户名:')
264         atmpasswd = input('请输入密码:')
265 
266         # 判断账户是否被冻结
267         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
268 
269             # 读取冻结账户文件内账户
270             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
271             freezeuser = pickle.load(r_freezeuser)
272             r_freezeuser.close()
273 
274             if atmuser in freezeuser:
275                 print('该账户已被冻结')
276                 return
277 
278         # 验证用户是否存在
279         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
280 
281             # 读出用户信息,登陆密码
282             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
283             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
284             r_atmuser_passwd.close()
285 
286             # 判断输入的账号是否存在密码是否正确
287             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
288 
289                 # 读出用户信息,显示账户余额
290                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
291                 read_atmuser_info = pickle.load(r_atmuser_info)
292                 r_atmuser_info.close()
293 
294                 # 显示账户可提款金额
295                 can_drawmoney = read_atmuser_info['balance']/2.00
296                 print('''用户{_atmuser}登陆成功,您的账户可用余额为{_balance},可提款金额为{_candrawmoney}。
297                          '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance'],_candrawmoney=can_drawmoney))
298 
299                 drawmoney = args[0]
300                 print('您将要提款的金额为:', drawmoney)
301                 if drawmoney <= can_drawmoney:
302 
303                     draw_or_out = input('确定提款请输入Y:')
304                     if draw_or_out == 'Y':
305 
306                         # 计算余额
307                         balance = read_atmuser_info['balance'] - drawmoney
308 
309                         # 将用户信息存入字典
310                         atmuser_info = {}
311                         atmuser_info['balance'] = balance
312 
313                         # 存入文件
314                         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
315                         pickle.dump(atmuser_info, w_atmuser_info)
316                         w_atmuser_info.close()
317 
318                         print('提款成功!')
319 
320                     else:
321                         print('验证失败')
322 
323                 else:
324                     print('超出可提款金额')
325 
326             else:
327                 print('密码错误')
328 
329         else:
330             print('用户不存在')
331 
332 
333     return wrapper
334 
335 @draw_wrapper
336 def draw():
337     pass
338 
339 #冻结账户
340 def freeze_wrapper(func):
341     def wrapper(*args,**kwargs):
342         print('您好请先登录atm!')
343         atmuser = input('请输入用户名:')
344         atmpasswd = input('请输入密码:')
345 
346         # 验证用户是否存在
347         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
348 
349             # 读出用户信息,登陆密码
350             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
351             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
352             r_atmuser_passwd.close()
353 
354             # 判断输入的账号是否存在密码是否正确
355             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
356                 # 读出用户信息,显示账户余额
357                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
358                 read_atmuser_info = pickle.load(r_atmuser_info)
359                 r_atmuser_info.close()
360 
361                 print('''用户{_atmuser}登陆成功,您的账户可用余额为{_balance}。
362                     '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance']))
363 
364                 freeze_or_not=input('是否确认冻结账户?输入Y确认')
365                 if freeze_or_not=='Y':
366 
367                     # 将用户名写入文件,每次登陆读取该文件确认是否被冻结
368 
369                     #先判断冻结账户文件是否存在
370                     if os.path.exists(BASE_DIR + '\' + 'docs' + '\' +  'atmfreezeuser' + '.txt'):
371 
372                         #读取冻结账户文件内账户
373                         r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
374                         freezeuser=pickle.load(r_freezeuser)
375                         r_freezeuser.close()
376 
377                         freezeuser_list=freezeuser.append(atmuser)
378 
379                         #将用户写入冻结账户文件
380                         w_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'wb')
381                         pickle.dump(freezeuser_list,w_freezeuser)
382                         w_freezeuser.close()
383 
384                     else:
385                         freezeuser_list=[atmuser]
386 
387                         # 将用户写入冻结账户文件
388                         w_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'wb')
389                         pickle.dump(freezeuser_list, w_freezeuser)
390                         w_freezeuser.close()
391 
392                     print('冻结成功!可联系银行工作人员解冻!')
393 
394     return wrapper
395 
396 @freeze_wrapper
397 def freeze():
398     pass

购物车程序:

  1 #!/usr/bin/env python
  2 # -*- coding:utf-8 -*-
  3 # Author:James Tao
  4 
  5 #登陆
  6 import os
  7 import sys
  8 import pickle
  9 
 10 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 11 
 12 #添加商品
 13 shoppinggoods=[
 14     ['iphone',5800],
 15     ['Mac',12000],
 16     ['Book',50],
 17     ['Bike',800],
 18     ['Coffee',30],
 19 ]
 20 
 21 w_seller_shoppinggoods = open(BASE_DIR+'\'+'docs'+'\'+'shoppinggoods.txt', 'wb')
 22 pickle.dump(shoppinggoods, w_seller_shoppinggoods)
 23 w_seller_shoppinggoods.close()
 24 
 25 new_or_existuser = input('注册or登陆(注册输入’注册‘登陆输入’登陆‘):')
 26 
 27 # --------------------------------新用户注册输入薪水---------------------------------
 28 if new_or_existuser == '注册':
 29     buyername = input('请输入用户名(由字母数字下划线组成):')
 30     buyerpasswd = input('请输入密码(由字母数字下划线组成):')
 31 
 32     # 将用户密码存入字典
 33     user_passwd = {}
 34     user_passwd[buyername] = buyerpasswd
 35 
 36     # 将用户密码字典写入文件
 37     w_user_passwd = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'passwd' + '.txt', 'wb')
 38     pickle.dump(user_passwd, w_user_passwd)
 39     w_user_passwd.close()
 40 
 41     # 将用户信息存入字典
 42     user_info = {}
 43     user_info[buyername] = {'boughtgoods': []}
 44 
 45     # 将用户信息字典写入文件
 46     w_user_info = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'info' + '.txt', 'wb')
 47     pickle.dump(user_info, w_user_info)
 48     w_user_info.close()
 49 
 50     # 将用户信息暂时导入到temp_user_info里
 51     temp_user_info = user_info
 52 
 53 
 54 
 55 # ------------------------------旧用户登陆并导入用户信息-------------------------------
 56 elif new_or_existuser == '登陆':
 57 
 58     while True:
 59         buyername = input('请输入用户名:')
 60         buyerpasswd = input('请输入密码:')
 61 
 62         # 读出用户信息,登陆密码
 63         r_user_passwd = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'passwd' + '.txt', 'rb')
 64         read_user_passwd = pickle.load(r_user_passwd)
 65         r_user_passwd.close()
 66 
 67         # 判断输入的账号是否存在密码是否正确
 68         if buyername in read_user_passwd and buyerpasswd == read_user_passwd[buyername]:
 69 
 70             #判断用户是否购买过商品
 71 
 72             # 读出用户信息,已购买商品
 73             r_user_info = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'info' + '.txt', 'rb')
 74             read_user_info = pickle.load(r_user_info)
 75             r_user_info.close()
 76 
 77             if read_user_info[buyername]['boughtgoods']:
 78                 # 打印用户信息,余额、已购买商品
 79                 print('用户%s您好' % buyername)
 80                 print('------您已够买以下商品------')
 81                 for i in read_user_info[buyername]['boughtgoods']:
 82                     print(i)
 83 
 84                 # 将用户信息暂时导入到temp_user_info里
 85                 temp_user_info = read_user_info
 86                 break
 87             else:
 88                 print('您还未购买任何商品')
 89                 temp_user_info={}
 90                 temp_user_info[buyername] = {'boughtgoods': []}
 91                 break
 92 
 93         else:
 94             print('用户名不存在或密码错误,请重新登录')
 95 
 96 # 用户注册或登陆之后已经有了用户信息,包括用户名、薪水或余额、已购买商品存在temp_user_info字典里
 97 
 98 # 从文件中读出商品信息
 99 r_shoppinggoods = open(BASE_DIR+'\'+'docs'+'\'+'shoppinggoods.txt', 'rb')
100 read_shoppinggoods = pickle.load(r_shoppinggoods)
101 r_shoppinggoods.close()
102 
103 dict_of_bought = {}
104 
105 # 从字典temp_user_info读出用户信息,包括用户名、薪水或余额、已购买商品(以购买商品用数列存储)
106 list_of_bought = temp_user_info[buyername]['boughtgoods']  # 总购买商品用数列存储
107 new_list_of_bought = []#此次购买商品用数列存储
108 money=0
109 
110 # ---------------------------------开始购买流程-------------------------------------
111 while True:
112 
113     # 输出商品及其编号
114     print('--------支持购买的商品-------')
115     for index, item in enumerate(read_shoppinggoods):  # enumerate取出下标
116         print(index, item)
117         # print(read_shoppinggoods.index(item),item)
118     choice_of_user = input('选择购买商品编号输入q退出:')
119 
120     #判断输入是否合法
121     if choice_of_user.isdigit():
122         choice_of_user = int(choice_of_user)
123 
124         # 判断编号是否有对应商品
125         if 0 <= choice_of_user < len(read_shoppinggoods):
126 
127             # 加入购物清单
128             list_of_bought.append(read_shoppinggoods[choice_of_user][0])#总购买商品清单
129             new_list_of_bought.append(read_shoppinggoods[choice_of_user][0])#此次购买商品清单
130 
131             # 计算余额`
132             money += read_shoppinggoods[choice_of_user][1]
133 
134             print('''添加{_boughtgood}到您的购物车,该商品价格为{_price}元。
135                 '''.format(_boughtgood=read_shoppinggoods[choice_of_user][0], _price=read_shoppinggoods[choice_of_user][1]))
136 
137         else:
138             print('商品不存在')
139 
140     elif choice_of_user == 'q':
141 
142         # 统计购买的商品及数量
143         category_of_bought = set(new_list_of_bought)
144         for item in category_of_bought:
145             dict_of_bought[item] = list_of_bought.count(item)
146         print('您购买的商品及数量分别为', dict_of_bought)
147 
148         print('您已消费%s元。' % money)
149 
150         #判断new_list_of_bought内是否有商品
151         if new_list_of_bought:
152             #开始付款
153             pay_trueorfalse=True
154             payment = input('是否付款?(输入p付款输入其他退出):')
155 
156 
157             while pay_trueorfalse:
158 
159                 if payment=='p':
160 
161                     #调用atm.py程序
162                     bin_DIR = BASE_DIR + '\' + 'bin'
163                     sys.path.append(bin_DIR)# 添加环境变量
164                     from atmfunction import pay
165                     pay(money)
166 
167                     # 判断支付是否成功
168                     #读取中间文件
169                     r_pay_accomplished = open(BASE_DIR + '\' + 'docs' + '\' + 'pay_accomplish' + '.txt', 'rb')
170                     pay_accomplished=pickle.load(r_pay_accomplished)
171                     r_pay_accomplished.close()
172 
173 
174                     #若成功
175                     if pay_accomplished[0]=='accomplished':
176 
177                         print('支付成功!')
178 
179                         #将用户余额和购买商品更新存入字典
180                         temp_user_info[buyername] = {'boughtgoods': list_of_bought}
181 
182                         #将购买商品更新写入文件
183                         w_user_userinfo = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'info' + '.txt', 'wb')
184                         pickle.dump(temp_user_info, w_user_userinfo)
185                         w_user_userinfo.close()
186 
187                         #更改中间文件用于下次验证
188                         pay_accomplished = ['un_accomplished']
189                         w_pay_accomplished = open(BASE_DIR + '\' + 'docs' + '\' + 'pay_accomplish' + '.txt', 'wb')
190                         pickle.dump(pay_accomplished,w_pay_accomplished)
191                         w_pay_accomplished.close()
192 
193                         exit()
194 
195                     else:
196                         payment = input('支付失败!(输入P重新付款输入其他退出):')
197 
198                 else:
199                     print('验证失败!已退出支付!')
200                     exit()
201         else:
202             exit()
203 
204     else:
205         print('输入不合法')
原文地址:https://www.cnblogs.com/BIT-taozhen/p/9851951.html