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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 抽签程序_抽签程序源码

發(fā)布時間:2023/12/20 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 抽签程序_抽签程序源码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#教程讀取excel文檔https://blog.csdn.net/sinat_28576553/article/details/81275650

#教程oenpyxl讀取excel文檔https://www.cnblogs.com/BlueSkyyj/p/7571787.html

#pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl #安裝openpyxl,CMD需要以管理員身份運行

#教程tkinter使用https://blog.csdn.net/ahilll/article/details/81531587

import tkinter as tk #tkinter是python自帶的圖形開發(fā)庫

import openpyxl #導(dǎo)入openpyxl庫,本庫可以修改excel的單元格內(nèi)容。

import random

window = tk.Tk() #新建一個窗口

window.title("抽簽") #窗口顯示的名稱

window.geometry('500x300') #窗口的分大小

displayword = tk.Label(window,text ='班級抽簽程序',

bg = 'green', font = ('Arial',12),

width = 30,height = 2) #設(shè)置將要顯示文本內(nèi)容'班級抽簽程序',

displayword.pack() #將文本顯示在窗口中(由系統(tǒng)自動設(shè)置位置)

displayword1 = tk.Label(window,text ='班級選項:',

bg = 'green', font = ('Arial',12),

width = 30,height = 2)

displayword1.pack()

inputword = tk.Entry(window,show = None, font = ('Arial',14)) #設(shè)置一個單行輸入框,輸入選擇的班級

inputword.pack()

displayword2 = tk.Label(window,text ='抽中次數(shù)上限:',

bg = 'green', font = ('Arial',12),

width = 30,height = 2) #設(shè)置將要顯示文本內(nèi)容'抽中次數(shù)上限:'

displayword2.pack()

inputword2 = tk.Entry(window,show = None, font = ('Arial',14)) #設(shè)置一個單行輸入框,輸入設(shè)定的選擇次數(shù)上限

inputword2.pack()

displayword3 = tk.Label(window,text = "抽簽結(jié)果",

bg = 'green', font = ('Arial',12),

width = 30,height = 2)#設(shè)置將要顯示文本內(nèi)容"抽簽結(jié)果"

displayword3.pack()

print("1") #通過設(shè)置print函數(shù),可以檢測程序運行到哪段代碼了。

workbook = openpyxl.load_workbook("名單.xlsx") #讀取excel文"名單.xlsx"

#worksheet = workbook.worksheets[1] #通過工作簿順序讀取0為第一張表

sheetnames =str(workbook.sheetnames) #獲取所有的工作簿名稱,默認(rèn)存儲形式是list,數(shù)據(jù)類型需要修改為str

displayword1["text"] = '班級選項:'+ sheetnames #將displayword1顯示內(nèi)容修改為'班級選項:'+str(sheetnames)

print("2")

#在def定義函數(shù)之前,需要新建變量,函數(shù)內(nèi)部新建的變量是局部變量,函數(shù)外面是全局變量(global).

sheetname =""

#cols = 0

#col = 0

rows = 0

row = 0

cv = ""#單元格的值

number = ""

runtimes = 0

name = ""

ID = ""

#定義函數(shù),點擊按鈕以后觸發(fā)的程序。

def click():

sheetname = inputword.get() #獲取輸入框內(nèi)工作簿名稱

worksheet = workbook[sheetname] #通過工作簿名稱讀取

#cols = worksheet.max_column #獲取最大的列數(shù)

rows = worksheet.max_row #獲取最大的行數(shù)

row = random.randint(2,rows) #獲取隨機一個行數(shù)

#col = random.randint(2,cols) #獲取隨機一個列數(shù)

cv = worksheet.cell(1,1).value #獲取單元格第1行,第1列的值

number = worksheet.cell(row,3).value #獲取第隨機行,第3列單元格的值

numbers = int(inputword2.get()) #獲取輸入框內(nèi)設(shè)定的上限,并轉(zhuǎn)換為int型

#通過循環(huán)次數(shù)控制程序結(jié)果,缺點是可能漏掉,概率非常低,可以通過調(diào)整次數(shù)降低概率。

runtimes = 0

while runtimes <=5000:

if number <= numbers:

name = worksheet.cell(row,1).value #獲取第隨機行,第1列單元格的值,學(xué)生姓名

ID = str(worksheet.cell(row,2).value) #獲取第隨機行,第2列單元格的值,學(xué)生學(xué)號,并轉(zhuǎn)換數(shù)據(jù)類型是str

number =number + 1 #學(xué)生被抽中次數(shù)加1

worksheet.cell(row,3,number) #將單元格row行,3列的值修改為number

#print(cv,name)

displayword3["text"] = name+ID #將displayword3顯示的內(nèi)容設(shè)置為抽中學(xué)生的姓名和學(xué)號

displayword3.pack()

break #跳出循環(huán)

else:

runtimes = runtimes + 1 #運行次數(shù)加1

row = random.randint(2,rows) #獲取隨機一個行數(shù)

#col = random.randint(2,cols) #獲取隨機一個列數(shù)

number = worksheet.cell(row,3).value #獲取第隨機行,第3列單元格的值

if runtimes >5000: #如果運行5000次都沒有找到符合條件的學(xué)生

displayword3["text"] = "沒有符合條件的同學(xué)" #將displayword3顯示的內(nèi)容設(shè)置為"沒有符合條件的同學(xué)"

workbook.save("名單.xlsx") #保存工作表

b1 = tk.Button(window, text = '確認(rèn)', width = 10,

height = 2, command = click) #設(shè)置按鈕的參數(shù)

b1.pack()

#wait = input() #避免雙擊.py文件直接運行時程序退出。編輯狀態(tài)時,input函數(shù)會導(dǎo)致程序無法顯示tk界面

總結(jié)

以上是生活随笔為你收集整理的python 抽签程序_抽签程序源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。