【python35.2--图形用户界面EasyGui】

一、猜字游戏

#猜字游戏(从1到10)
import easygui as g
import random

g.msgbox('欢迎进入探险之路!')
screct = random.randint(1,10)

msg = '猜一下尘封的幸运数字是那个'
title = '数字探险之路'
guess = g.integerbox(msg,title,lowerbound=1,upperbound=10)

while 1:
    if guess == screct:
        g.msgbox('很牛啊!')
        g.msgbox('猜对有奖励啊')
        break
    else:
        if guess > screct:
            g.msgbox('兄弟猜的大了!')
        else:
            g.msgbox('兄弟猜的有点小!')

        guess = g.integerbox(msg,title,lowerbound=1,upperbound=10)

g.msgbox('游戏结束,不玩啦!')

二、实现一个等级用户信息的页面(带*号必填,要求一定要有输入并且不能为空格)

'''
|--实现一个等级用户信息的页面(带*号必填,要求一定要有输入并且不能为空格)
|--要求用户名,真实姓名,手机号码,E-mail必填,固定电话,QQ非必填
'''
import easygui as g

msg = '输入以下用户信息'
title = '账户中心'
fileNames = ['*用户名','*真实姓名','固定电话','*手机号码','QQ','*E-mail']
fileValues = []
fileValues = g.multenterbox(msg,title,fileNames)

while 1:
    if fileValues == None:
        break
    errmsg = ""

    for i in range(len(fileNames)):
        option = fileNames[i].strip()
        if fileValues[i].strip() == "" and option[0] =="*":
            errmsg += ('【%s】为必填项。\n\n' %fileNames[i])

    if errmsg == "":
        break
    fileValues = g.multenterbox(errmsg,title,fileNames,fileValues)

print('用户资料如下:%s'% str(fileValues))

三、提供一个文件浏览框,让用户选择需要打开的文本文件,打开并显示文件内容

'''
|--打开用户选择的文件,显示文本内容
|--比较文件是否修改过,如果修改过,则提示:覆盖保存,不保存,另存外
'''
import easygui as g
import os

file_path = g.fileopenbox(default='/Users/yixia/Desktop/*.txt')

with open(file_path) as old_file:
    title = os.path.basename(file_path)
    msg = '文件【%s】的内容如下:'%title
    text = old_file.read()

    text_after=g.textbox(msg,title,text)

if text != text_after[:-1]:
    choice = g.choicebox('检测到文本内容发生了变化,请做如下修改','警告',('覆盖保存','不保存','另存为...'))

    if choice == "覆盖保存":
        with open(file_path,'w') as old_file:
            old_file.write(text_after[:-1])
    if choice == "不保存":
        pass
    if choice == "另存为...":
        another_path = g.filesavebox(default='/Users/yixia/Desktop/*.txt')
        if os.path.splitext(another_path)[1]!="*.txt":
            another_path += '.txt'

        with open(another_path,'w') as new_file:
            new_file.write(text_after[:-1])

 四、4. 写一个程序统计你当前代码量的总和,并显示离十万行代码量还有多远??-D+=mG
RN'o@:cu(O5=&?{t2q>!SK[|<;QPV

    • 要求一:递归搜索各个文件夹
    • 要求二:显示各个类型的源文件和源代码数量
    • 要求三:显示总行数与百分比
import easygui as g
import os

#此方法用于展示结果
def show_result(start_dir):
    lines = 0
    total = 0
    text = ""

    #遍历这个文件内的源文件,输入最终结果:什么文件多少个代码多少行
    for i in source_list:
        #统计每一个文件的代码行
        lines = source_list[i]
        #统计多少行代码
        total += lines
        text += "【%s】源文件 %d 个,源代码 %d 行\n" % (i, file_list[i], lines)
    title = '统计结果'
    msg = '您目前共累积编写了 %d 行代码,完成进度:%.2f %%\n离 10 万行代码还差 %d 行,请继续努力!' % (total, total / 1000, 100000 - total)
    g.textbox(msg, title, text)

#统计每个文件有多少行代码
def calc_code(file_name):
    lines = 0
    with open(file_name) as f:
        print('正在分析文件:%s ...' % file_name)
        try:
            for each_line in f:
                lines += 1
        except UnicodeDecodeError:
            pass  # 不可避免会遇到格式不兼容的文件,这里忽略掉......
    return lines

#打开文件夹查找文件
def search_file(start_dir):
    #改变当前工作目录到指定的路径
    os.chdir(start_dir)

    #os.listdir(os.curdir):列举当前目录的文件名,遍历所有文件
    for each_file in os.listdir(os.curdir):
        #已后缀分割文件,放在ext文本内
        ext = os.path.splitext(each_file)[1]
        if ext in target:
            lines = calc_code(each_file)  # 统计行数
            # 还记得异常的用法吗?如果字典中不存,抛出 KeyError,则添加字典键
            # 统计文件数
            try:
                file_list[ext] += 1
            except KeyError:
                file_list[ext] = 1
            # 统计源代码行数
            try:
                source_list[ext] += lines
            except KeyError:
                source_list[ext] = lines
        #判断是否存在查找文件的一个目录
        if os.path.isdir(each_file):
            search_file(each_file)  # 递归调用
            os.chdir(os.pardir)  # 递归调用后切记返回上一层目录


target = ['.c', '.cpp', '.py', '.cc', '.java', '.pas', '.asm']
file_list = {}
source_list = {}

g.msgbox("请打开您存放所有代码的文件夹......", "统计代码量")
path = g.diropenbox("请选择您的代码库:")

search_file(path)
show_result(path)

 

转载于:https://www.cnblogs.com/frankruby/p/9625772.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值