'''
0. 先练练手,把我们的刚开始的那个猜数字小游戏加上界面吧?
import easygui as g
import random
secret = random.randint(1,10)
temp = g.enterbox(msg="不妨猜一下小甲鱼现在心里想的是哪个数字:",title="数字小游戏")
while True:
try:
guess = int(temp)
if guess == secret:
g.msgbox(msg="我草,你是小甲鱼心里的蛔虫吗?!",title="数字小游戏",ok_button='你说呢?')
g.msgbox("哼,猜中了也没有奖励!",title="数字小游戏",ok_button='反正我猜中了')
break
else:
if guess > secret:
g.msgbox(msg="哥,大了大了~~~",title="数字小游戏",ok_button='继续')
else:
g.msgbox(msg="哥,小了小了~~~",title="数字小游戏",ok_button='继续')
temp = g.enterbox(msg="哎呀,猜错了,请重新输入吧:",title="数字小游戏")
except ValueError:
temp = g.enterbox(msg="哎呀,猜错了,请重新输入吧:",title="数字小游戏")
g.msgbox(msg="游戏结束,不玩啦^_^",title="数字小游戏")
'''
'''
1. 如下图,实现一个用于登记用户账号信息的界面(如果是带 * 号的必填项,要求一定要有输入并且不能是空格)
#这题还没完成,后面有时间再完成
import easygui
while True:
values = easygui.multenterbox(msg="【*真实姓名】为必填项。\n 【*手机号码】为必填项。\n【*E-mail】为必填项。",title='账号中心',fields=['*用户名','*真实姓名','固定电话','*手机密码','QQ','*E-mail'])
if (values[0] == '') or (values[1] == '') or (values[3] == '') or (values[5] == ''):#空格怎么判断啊
easygui.msgbox(msg="带*号为必填项",title="账号中心")
else:
break
'''
'''
2.提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容。
'''
'''
import easygui as g
import os
path = g.diropenbox(msg="请选择一个文件夹",title="显示文件内容")
file = g.fileopenbox(default= path,filetypes= ['*.txt'])
with open(file) as f:
old_file = f.read()
g.codebox(msg= "文件【%s】的内容如下:" % os.path.split(file)[1], title="显示文本内容",text = old_file)#这里还以为test后面跟的是文件路径的,其实是要显示的文本内容
'''
'''
3.在上一题的基础上增强功能:当用户点击“OK”按钮的时候,比较当前文件是否修改过,如果修改过,则提示“覆盖保存”、”放弃保存”或“另存为…”并实现相应的功能。
'''
'''
import easygui as g
import os
def choice(new_file,file_name):
choose = g.buttonbox(msg="检测到文件内容发生改变,请选择以下操作:",title="警告",choices=('覆盖保存','放弃保存','另存为'),default_choice= '放弃保存',cancel_choice='放弃保存')
if choose == '覆盖保存':
with open(file_name,'w') as f:
f.write(new_file)
return None#这貌似可以提高效率
if choose == '另存为':
path = g.diropenbox(msg="请选择一个文件夹",title="另存为")
new_file_name = g.filesavebox(msg="请选择一个文件夹",title="另存为",default=path + os.path.splitext(file_name)[0])
with open(new_file_name,'w') as f:
f.write(new_file)
g.msgbox(msg="保存成功",title="提示")
return None
if choose == '放弃保存':
return None
try:
file = g.fileopenbox(default='*',filetypes= ['*.txt'])
with open(file) as f:
old_file = f.read()
new_file = g.codebox(msg= "文件【%s】的内容如下:" % os.path.split(file)[1], title="显示文本内容",text = old_file)#这里还以为test后面跟的是文件路径的,其实是要显示的文本内容
#用户点‘OK’之后开始进行比较
if old_file != new_file:
choice(new_file,file)
except:
g.exceptionbox()
'''
'''
4. 写一个程序统计你当前代码量的总和,并显示离十万行代码量还有多远?
要求一:递归搜索各个文件夹
要求二:显示各个类型的源文件和源代码数量
要求三:显示总行数与百分比
'''
''' #coding:utf-8
import easygui as g
import os
def get_file(path):#已完成
#进行统计
os.chdir(path)
for member in os.listdir(os.curdir):
line = 0
type = os.path.splitext(member)[1]
if type in file_type:#文件类型正确,开始统计行数
with open(member,'r',encoding='UTF-8') as f:
print('正在分析文件:%s ...' % member)
try:#统计行数
for each_line in f:
line += 1
except UnicodeDecodeError:
pass#无法遇到避免格式不正确的文件
try:#统计文件数
file_count[type] += 1
except KeyError:
file_count[type] = 1
try:#统计行数
line_count[type] += line
except KeyError:
line_count[type] = line
if os.path.isdir(member):
get_file(path + os.sep + member)
os.chdir(os.pardir)#忘记这步,递归调用后切记返回上一层,这里出错了
def print_sum():#打印结果
sum = 0
aim = 100000
text_print = []
for i in line_count:
lines = line_count[i]
sum += lines
text_print += ("【%s】源文件 %d 个,源代码 %d 行" % (i,file_count[i],lines))#不懂打印想要的格式
msg = "您目前共累计编写了 %d 行代码,完成进度:%.2f %%\n离10万行代码还差 %d 行,请继续努力" % (sum , sum/1000,aim - sum)#不懂怎么输出百分数
title="统计结果"
g.textbox(msg,title,text_print)
file_type = ['.py']#要统计的文件类型
file_count = {}#统计文件个数
line_count = {}#统计文件类型与其对应的代码行数
path = g.diropenbox(msg="请选择您的代码库:",title="浏览文件夹",default='*')
get_file(path)
print_sum()
'''
#看完答案,感觉自己代码的可读性很低,代码看起来思路不太清晰,哎~