Python上课笔记2

Python中可以一次行输入多个数字的方法

a,b=map(int,input().split())
#split()函数就是可以自动识别空格断开

猜数字游戏

这里需要调用一下random这个库

import random as ra  #当然我这里给他重新定义了一个名字
i = 0  
x =ra.randint(0,100)  
  
while i<3:  
    a = int(input())  
    if a==x:  
        print("right")      
        break  
    elif a<x:  
        print("lower")  
    else:  
        print("upper")  
    i+=1  
  
if i>=3:  
    print(x)

ASCII编码

用chr()函数来进行转换

x = 97
for i in range(1,27):
	print(chr(x+i),x+i)#chr()函数的作用
	
	

阶乘

def func(x):  
    if x==1 or x==0:  
        return 1  
    else:  
        return x * func(x-1)  
  
a = int(input("input a number:"))  
print(func(a))

无限循环

a=list()  
  
while True:  
    s = input();  
    if s=="exit":  
        break  
    a.append(s)  
for i,task in  enumerate(a,1):#enumerate()函数同时获得元素的的编号/索引和值  
    print(f'{i}.{task}')
'''
nihao
shuijiao
chifan
exit
输出:

1.nihao
2.shuijiao
3.chifan
'''

字符串反转

a = input()  
  
print(''.join(reversed(a)))  
print(a[::-1])

join的用法:

a = input()  #123
  
print('.'.join(reversed(a)))  #输出3.2.1
print(a[::-1])  #321
'''
123
3.2.1
321
'''

文件的编辑打开与保存

def create_file(filename):  
    with open (filename,'w') as file:  
        print(f"文件{filename}已经被创建")  
  
  
def open_file(filename):  
    try:  
        with open(filename,'r') as file:  
            content = file.read()  
            print(f'{filename}已经被打开')  
            print(f'内容是:{content}')  
    except FileNotFoundError:  
        print(f'{filename}不存在')  
  
  
def save_file(filename,content):  
    with open(filename,'w') as file:  
        file.write(content)  
        print(f'{filename}已经被保存')  
  
  
def main():  
   filename = input("输入文件名字:")  
   create_file(filename)  
  
   while True:  
       print("请选择操作:")  
       print("1.打开文件")  
       print("2.编辑文件")  
       print("3.保存文件")  
       print("4.退出")  
       f = int(input())  
       if f==4:  
           break  
       elif f==1:  
            open_file(filename)  
       elif f==2:  
            content =input("请输入文件内容")  
       elif f==3:  
            save_file(filename,content)  
       else:  
            print("请重新输入")  
  
if __name__ == '__main__':  
    main()  
   #主函数

图像化编程

image

import tkinter  #内置
from tkinter import * #导入,这样就可以不用使用前缀了


top = Tk()#创建窗口创建窗口对象,top是Tk的实例
label = Label(top,text='这是我的第一个窗口',fg = 'red',font =('黑体',20))#创建GUI程序功能,显示信息
#text是我们要展示的内容
top。title("我的窗口")
top.geometry('480x480+50+100')#+50+100是距离显示器左边和上边的距离
#这里不是乘号,而是小写x
label.pack()#建立GUI模块与代码联系
top.mainloop()#主循环事件
#以上是基本的步骤



实例:电子时钟

from tkinter import *
import time


def get_time():
	time_str = time.strftime('%H:%M:%S')
	lb.configure(text=time_str)
	top.after(1000,get_time)#每隔1000ms进行一个更新



top = Tk()
lb  = Label(top,fg='red',font=("黑体",20))
top.geometry('480x480+50+100')#+50+100是距离显示器左边和上边的距离
lb.pack()
get_time()

top.mainloop()


实例:计算器

注意看一下代码,有错误的地方,前面没有写好,后来把老师的代码粘贴了过来

import tkinter as tk


#将文本放在按键上
def on_button_click(value):
	current_text = entry_var.get()
	entry_var.set(current_text+str(value))
	
#清空文本框
def clear_entry():
	entry_var.set('')
#计算表达式
def calculate_result():
	try:
		result = eval(entry_var.get())
		enrty_var.set(result)
	except Exception as e:
		enrty_var.set('Error')

root = tk.Tk()
root.title('简易计算器')
enrty_var = tk.StringVar()

#创建显示区域
entry = tk.Entry(root,textvariable = entry_var)
entry.grid(row = 0,colum = 0,columspan=4)

#按钮的布局
buttons = [('7',1,1),('8',1,2),('9',1,3),('/',1,4)
		   ('4',1,1),('5',1,2),('6',1,3),('*',1,4)
		   ('1',1,1),('2',1,2),('2',1,3),('+',1,4)
		   ('0',1,1),('c',1,2),('=',1,3),('-',1,4)]
#创建按钮
for (text,row,column) in buttons:
	if text =='c':
		botton = tk.Button(root,text = text,command = clear_entry())
	elif text =='=':
		botton = tk.Button(root,text = text,command = calculate_result())
	else:
		botton = tk.Button(root,text = text,command = 
lamda t=text:on_button_click(t))
	button.grid(row,column=column)
#这是一个未完成的代码,存在一定的错误,但是后续会完善
#下面就是一个正确的模拟计算器的代码:



# 开 发 人:zhangxiahui  
# 开发时间:2023/11/27 8:43  
  
'''#5个基本步骤  
#import tkinter  
from tkinter import *    #1.导入模块  
top=Tk()                 #2.创建窗口对象,top是Tk的实例  
label=Label(top,text='这是我的第一个窗口',fg='red',font=('黑体',20))         #3.创建GUI程序功能,显示信息  
top.title('我的窗口')      #标题  
top.geometry('480x480+100+100')    #小写x,创建窗口大小,位置  
label.pack()             #4.建立GUI模块与代码联系  
top.mainloop()           #5.主循环事件'''  
  
#电子时钟  
'''from tkinter import *  
import time  
  
def get_time():  
    time_str=time.strftime('%H:%M:%S')    lb.configure(text= time_str)    top.after(1000,get_time)top=Tk()  
top.title('我的时钟')  
lb=Label(top,fg='red',font=('黑体',80))  
top.geometry('500x150+100+100')  
lb.pack()  
get_time()  
top.mainloop()'''  
  
  
  
#计算器  
import tkinter as tk  
  
#将文本放到按键上  
def on_button_click(value):  
    current_text=entry_val.get()  
    entry_val.set(current_text+str(value))  
#清空文本框  
def clear_entry():  
  
    entry_val.set("")  
#计算表达式  
def calculate_result():  
    try:  
        result=eval(entry_val.get())   #将用户输入的字符串表达式经过eval求值,来计算用户输入的表达式  
        entry_val.set(result)  
    except Exception as e:  
        entry_val.set('Error')  
  
  
root = tk.Tk()  
root.title("简单计算器")  
entry_val =tk.StringVar()    #StringVar 是Tkinter提供的一种特殊的变量类型,它用于与Tkinter的控件(如Entry、Label等)关联  
  
#创建显示区域  
entry=tk.Entry(root,textvariable=entry_val)  
entry.grid(row=0, column=0, columnspan=4, ipadx=8, ipady=8)  
#按钮布局  
buttons=[('7',1,1),('8',1,2),('9',1,3),('/',1,4),  
         ('4',2,1),('5',2,2),('6',2,3),('*',2,4),  
         ('1',3,1),('2',3,2),('3',3,3),('-',3,4),  
         ('0',4,1),('C',4,2),('=',4,3),('+',4,4)]  
#创建按钮  
for (text,row,column) in buttons:  
    if text == 'C':  
        # 创建清除按钮并绑定清除函数  
        button = tk.Button(root, text=text, command=clear_entry, font=('Times New Roman', 12),  
                           padx=20, pady=20)  
    elif text=='=':  
        button = tk.Button(root, text=text, command=calculate_result, font=('Times New Roman', 12), padx=20, pady=20)  
    else:  
        button=tk.Button(root,text=text,command=lambda t=text:on_button_click(t),padx=20,pady=20)  
  
    button.grid(row=row,column=column,sticky='nsew')  
  
  
root.mainloop()


image
image

Tk中布局方式

# 1.pack布局方式
from tkinter import Tk,Label
root = Tk()
label = Label(root,text='Label1')
label.pack(padx = 30,pady = 50)
#text文本距离窗口的x距离和y距离
label1 = Label(root,text='Label2')
label1.pack(padx = 30,pady = 50)
#以上一个label的下边为上边继续延伸
root.mainloop()
# 2.grid布局(网格状布局)
from tkinter import Tk,Label
root = Tk()
label = Label(root,text='label1')
label.grid(row=0,column=1)
#3.place(窗口里x轴和y轴,以左上角为原点)
from tkinter import Tk,Label
root = Tk()
label = Label(root,text='label1')
label.place(x=50,y=60)
label1 = Label(root,text='Label2')
label1.pack(x = 60,y = 50)

做一个简单的请假方式

# 开 发 人:zhangxiahui  
# 开发时间:2023/11/20 17:08  
  
import tkinter as tk  
from PIL import Image, ImageTk   #导入图片需要  
from tkinter import messagebox    #此路不通导入  
from random import random       #不同意随机移动时导入  
  
root=tk.Tk()  
root.geometry('800x500+100+100')  #设置了一个宽度为800像素、高度为500像素的窗口,  
                                    # 并将其放置在屏幕左上角水平和垂直方向偏移100像素的位置。  
root.title('请假申请')  
  
frame1=tk.Frame(root)     #窗口,创建一个框架,用于组织和布局其他组件。  
frame1.pack()  
  
tk.Label(frame1,text='亲爱的老师:\n我想请假',font=24,padx=30,pady=30).pack(side=tk.LEFT,anchor=tk.N)  
                           #padx,组件跟邻近组件或窗体边界的距离(外边距),pack()函数是用来布局的  
img= Image.open(r'F:\AAA工作\11课件\python\tupian\告辞.jpg')  
photo = ImageTk.PhotoImage(img)             #读取jpg  
#img=tk.PhotoImage(file=r'F:\AAA工作\11课件\python\tupian\R.gif')   #读取gif  
label_img=tk.Label(frame1,image=photo,padx=30,pady=30,bd=50)   #Labe中bd表示距离边框的宽度  
label_img.pack(side=tk.LEFT,anchor=tk.N)  
  
tk.Label(frame1,text='请假人:张三',font=24,padx=30,pady=30,height=25).pack(side=tk.LEFT)  
  
yes_img= Image.open(r'F:\AAA工作\11课件\python\tupian\同意.png')  
photo2= ImageTk.PhotoImage(yes_img)  
no_img= Image.open(r'F:\AAA工作\11课件\python\tupian\不同意.png')  
photo3= ImageTk.PhotoImage(no_img)  
  
yes_btn=tk.Button(frame1,image=photo2,bd=10)  
no_btn=tk.Button(frame1,image=photo3,bd=10)  #Button中的bd表示边框宽度  
  
yes_btn.place(relx=0.3,rely=0.8,anchor=tk.CENTER)     #relx相对x位置,tk.CENTER为居中放置  
no_btn.place(relx=0.7,rely=0.8,anchor=tk.CENTER)  
  
#2第二页设定,可以先把注释frame1.pack(),再写  
frame2=tk.Frame(root)  
frame2.pack()  
tk.Label(frame2,text='耶!\n请假成功!',font=('黑体',20),justify=tk.CENTER,  
height=300,fg='red',padx=50).pack()  #justify设置对齐方式  
tk.Button(frame2,text='退出',command=root.quit).place(relx=0.4,rely=0.8)  
  
#此路不通  
def on_exit():     #定义一个事件  
    messagebox.showwarning(title='提示',message='此路不通')  
root.protocol('WM_DELETE_WINDOW',on_exit)    #protocol滚轮点击然后看一下  
  
#不同意移动设定  
def move(event):        #定义一个事件  
    no_btn.place(relx=random(),rely=random(),anchor=tk.CENTER)  
no_btn.bind('<Enter>',move)   #<Enter>是将鼠标移近的一个事件  
  
#3点击同意,跳到第二个页面  
def sure():  
    frame1.pack_forget()     #将页面1隐藏起来  
    frame2.pack()  
yes_btn.config(command=sure)  #tkinter中command功能的作用是为按钮、菜单等组件  
                              # 绑定回调函数,用户操作该组件时会触发相应的函数执行。  
  
root.mainloop()
#这里需要将图片链接给改一下,改成自己电脑上保存图片的位置

处理excel文件的相关模块

openpyxl模块

这是python库的一个模块,需要外部导入
在终端输入pip install openpyxl
下载好后输入python
导入用import openpyxl

以上就是导入外部库的方式

使用外部库

import openpyxl
workbook=openpyxl.load_workbook("文件的地址")
#print(workbook.sheetnames)
sheet = workbook['销售量']#多表格
sheet = workbook.active #进行一个表格的打开(就是不能进行指定了)
print(sheet.dimensions)#输出数据的尺寸(表的大小)
cell = sheet['E8']
print(cell.value)#获取单元格的数据
#如果输出单元格就会出现单元格的属性,不是单元格的数据,如下:
print(cell)


#获取多个单元格的数据
cells = sheet['B3:E7']
#多数据需要遍历输出(在大元组中包含小元组,因为选取的范围是一个二维的)
for cell in cells:
	print(cell[0].value)
	
cells2 = sheet['A']#这个只有一列

for cell in cells2:
	print(cell.value)

#上面都是列的遍历,下边有行的遍历


#获取一行
row = sheet[20]
for cell in row:
	print(cell.value)


#获取所有行

rows = sheet.rows
for row in rows:
	for cell in row:
		print(cell.value,end=",")
	print('*'*10)
	
#获取所有列的操作
lies = sheet.cols

for lie in lies:
	for cell in lie:
		print(cell.value,end=",")
	print('*'*10)

#指定行和列
data = sheet.iter_rows(min_row = 1,max_row = 10,min_col=1,max_col = 10)
#指定行和列
#指定一个范围

for row in data:
	for cell in row:
		print(cell.value,end=",")
		
	print('*'*10)
			
import openpyxl
workbook = openpyxl.load_workbook('表格1.xlse')
sheet = workbook['Sheet1']

#插入一列
sheet.insert_cols(idx = 2) #在第二列插入新的列
sheet.insert_cols(idx = 2,amount = 3)
sheet.insert_rows(idx = 2,amount = 3)


import openpyxl
workbook = openpyxl.load_workbook('表格1.xlsx')
#print(workbook.sheetnames)

workbook.create_sheet('sheet100') #创建一个子表格
#print(workbook.sheetnames)


#将子表格删除
workbook.remove('sheet100') #不存在子表格就会报错


sheet = workbook['sheet100']
workbook.remove('sheet100')


#复制工作表
workbook.copy_worksheet('sheet1')
print(workbook.sheetnames)

#重命名
sheet = workbook['Sheet']
sheet.title = 'du463'




workbook.save('表格1.xlsx') #最后需要对文件进行一个保存
#最后是都需要写这个保存的

调整字体和样式

import openpyxl
from openpyxl.styles import Font

workbook = openpyxl.load_workbook('表格1.xlsx')
sheet = workbook['Sheet']

#单个单元格的改变
cell = sheet['A1']
font = Font(name = '黑体',size = 20,bold = True,color = '00ff0000') #这里color是需要使用16进制字符表示对应的颜色
cell.font = font
#bold 加粗


#多个单元格
cell_range = sheet['A2:C2']
for row in cell_range:
	for cell in row:
		cell.font = font
		

#全部单元格
for row in sheet.iter_rows():
	for cell in row:
		cell.font = font



#获取单元格字体信息
cell = sheet['A1']
font = cell.font
print(font.name,font.size,font.bold,font.color)
#查看字体名,字体大小,字体是否加粗,字体的颜色


#对其方式
sheet = workbook['Sheet']

cell = sheet['A1']
align =  Alignment(horizontal = 'center' , vertical = 'center')
#vertical垂直对齐方式
#horizontal水平对齐方式
cell.alignment = align

workbook.save('表格1.xlsx')

posted @ 2023-12-04 18:14  du463  阅读(46)  评论(0编辑  收藏  举报