日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

懒人的法宝——办公自动化!

發布時間:2023/12/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 懒人的法宝——办公自动化! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

沒錯!辦公自動化他來了!果然,代碼都是懶人發明出來的。接下來讓我們一起來看看這個批改作業的自動化腳本吧!學會了這種思想可以幫助我們高效解決許多重復性的工作,比如說批量修改文件的名稱類型位置等等,快讓我們通過一個案例一起學起來吧!

一、什么是辦公自動化??

Python辦公自動化主要是批量化、自動化、定制化解決數據問題,目前主要分為三大塊:自動化office自動化機器人自動化數據服務辦公自動化(Office Automation,簡稱OA)是將現代化辦公和計算機技術結合起來的一種新型的辦公方式。辦公自動化沒有統一的定義,凡是在傳統的辦公室中采用各種新技術、新機器、新設備從事辦公業務,都屬于辦公自動化的領域。?通過實現辦公自動化,或者說實現數字化辦公,可以優化現有的管理組織結構,調整管理體制,在提高效率的基礎上,增加協同辦公能力,強化決策的一致性 。

二、實戰案例

有一個子目錄“zuoye”有若干文本文件,gbk編碼。分別存儲了每個學生提交上來的算術作業,文件名是學生的學號。算術作業包括+-*/,每行一道題設計一個自動批改程序,要求完成以下功能允許每個數前后可能有空白,允許結果為負數的情況,運算的數均為正整數。除法只考慮能整除的情況,要考慮可能有空白行,可能出現在文件的任意位置空白行不計入總題數,格式錯誤的題數計入總題數將批改結果保存到文件“results.txt“”,每一行記錄學號答對的百分比

txt文件如下:

?需要的結果如下:

三、思路描述

  • 首先我們可以先對一個文件去操作,比如說學號為1002131的同學,我們通過讀取這名稱的文件,讀取其中的每一行,再自定義一個函數,對其中的每一行進行判斷,判斷其是否計算正確,統計這個同學的正確率,用字典將姓名與正確率相關聯。這樣就可以得到這一位同學的正確率。
  • 有了讀取以為同學的思路,那么我們也可以通過讀取一個文件夾,將文件夾中的每個同學進行操作,這樣就可以得到這個文件夾下所有同學的正確率。同樣我們用字典將學號與正確率相關聯,便于最終輸出。
  • 經過前兩步,我們已經得到一個字典,這個字典的鍵是每一位同學的序號,值是該同學的正確率。只要分行將對應結果輸出到指定文件中就完成啦!
  • ?四、完整代碼

    import os import rename_list = [] allname_list = [] result_dic = {}target = os.walk("zuoye")for root, ds, fs in target:for f in fs:allname_list.append(f)name_list.append(f[:7:])def calculator(expression):if "+" in expression:sign = "+"elif "-" in expression:sign = "-"elif "*" in expression:sign = "*"else:sign = "/"num_list_1 = []num_list_2 = []split_list_1 = re.split("[=]", expression)split_list_2 = re.split("[*,=,+,/,-]", expression)for i in split_list_1:num_list_1.append(i.replace(" ", ""))if int(num_list_1[-1]) < 0:for i in split_list_2:num_list_2.append(i.replace(" ", ""))num_1 = num_list_2[0]num_2 = num_list_2[1]num_3 = num_list_2[-1]try:int(num_1) * int(num_2) * int(num_3)except ValueError:return 0else:if -int(num_3) == eval(f"{num_1}{sign}{num_2}"):return 1else:return 0else:for i in split_list_2:num_list_2.append(i.replace(" ", ""))num_1 = num_list_2[0]num_2 = num_list_2[1]num_3 = num_list_2[2]try:int(num_1) * int(num_2) * int(num_3)except ValueError:return 0else:if int(num_3) == eval(f"{num_1}{sign}{num_2}"):return 1else:return 0def func(num):r = open("zuoye"+'\\{0}'.format(allname_list[num]),encoding="GBK")tem_list = []result_list =[]line = r.readline()while line:# isspace()方法判斷當該行是空行時,跳過該行if line.isspace():line = r.readline()else:line = line.strip('\n') #去掉列表中每一個元素的換行符tem_list.append(line)line = r.readline()for i in tem_list:result_list.append(calculator(i))result_dic[name_list[num]] = sum(result_list)/len(result_list)Note = open('result.txt',mode='w') for i in range(0,len(allname_list)):func(i)Note.writelines([str(list(result_dic.keys())[i])," ",str(list(result_dic.values())[i]),"\n"]) #\n 換行符

    五、代碼講解

  • 首先我們讀取指定的文件夾,即“zuoye”文件夾,用target = os.walk("zuoye"),返回三個對象,最后一個即為所有文件的名稱列表,所有我們只用對最后一個fs進行遍歷就可以。將所有文件名添加到一個列表中,并另外用字符串切片的方式取出.txt。
  • 接下來就是最關鍵的判斷函數,這個函數的作用即判斷輸入的一個表達式是否正確,首先要確定符號,用if elif和else判斷輸入的到底是加減乘除什么類型表達式。再用正則表達式,用[*,=,+,/,-]對表達式進行切分,這里注意,如果有負數的情況,負數前面也會有-號,所以這里要用一個if語句進行判斷。
  • 將切割的結果賦值給三個變量,并且注意要用i.replace(" ", "")去除空格,要不然后面沒辦法用int轉化。這樣我們就拿到了三個數,以及他們的運算符號,我們用if int(num_3) == eval(f"{num_1}{sign}{num_2}")判斷這個表達式是否正確既可以啦,如果正確返回1,如果錯誤返回0,即做對得1分,做錯得0分。
  • 之后,再讀取文件夾里面的每一個文件,讀取每一個文件的每一行,如果讀到空行就跳過,不統計在里面,將讀取的每一行用上面的自定義函數進行判斷,統計每一個文件的總得分率,與文件總行數(去除空行)相除得到正確率。最后通過字典將該同學的學號和正確率關聯起來。
  • 最后,通過Note.writelines([str(list(result_dic.keys())[i])," ",str(list(result_dic.values())[i]),"\n"])將所得結果寫入到result文件中,這樣我們完成啦!
  • 總結

    以上是生活随笔為你收集整理的懒人的法宝——办公自动化!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。