新余网站建设人员,企业网络安全管理,福田祥菱m1图片及报价,东四网站建设语法
物质
动态类型语言,不需要声明类型
数字
类型int float bool
操作 //整除 **幂
字符串
str1 Hello python
str2 world
print(str1 * 3) # 重复输出
print(str1[1]) # 索引访问
print(str1 str2) # 拼接
print(str1[2…语法
物质
动态类型语言,不需要声明类型
数字
类型int float bool
操作 //整除 **幂
字符串
str1 Hello python
str2 world
print(str1 * 3) # 重复输出
print(str1[1]) # 索引访问
print(str1 str2) # 拼接
print(str1[2:4]) # 字符串切片
print(len(str1)) # 长度
#查找与替换
print(str1.find(python)) # 查找
print(str1.replace(python, c)) # 替换
print(str1.split( )) # 以关键字划分
print(str2.upper()) # 大小写lower/upper数组类
列表和元组
list [1, 2, 3, 4] #列表
tuple (1, 2, 3, 4) #元组
#列表内容可变,元组不可变列表的操作
arr [apple, banana, cherry]
#添加元素
arr.append(orange) # 在末尾追加元素
arr.insert(1, pear) # 在第2个位置插入元素
print(arr)
#删除元素
arr.remove(banana) # 删除指定元素
del arr[1] # 删除指定位置的元素
print(arr)
#查找元素
print(arr.index(apple)) # 查找指定元素的索引位置,没找到抛出异常
print(pear in arr) # 判断指定元素是否在数组中集合
#集合内不允许重复元素
A {1, 2, 3}
B {2, 3, 4}
A B #{2, 3}
A | B #{1, 2, 3, 4}
A - B #{1}
A ^ B #{1, 4}
A B #False
length len(A);字典
#就是键值对
person {name: John Doe, age: 30, gender: Male}
print(person[name]) # John Doe类与特殊方法
from filecmp import cmpclass Book:def __init__(self, title, author, pages):self.title titleself.author authorself.pages pagesdef __str__(self):return f{self.title} by {self.author}def __repr__(self): # representationreturn fBook({self.title}, {self.author}, {self.pages})def __len__(self):return self.pagesdef __add__(self, other):return self.pages other.pagesdef __eq__(self, other):return (self.title other.titleand self.author other.authorand self.pages other.pages)book1 Book(The Great Gatsby, F. Scott Fitzgerald, 180)
book2 Book(To Kill a Mockingbird, Harper Lee, 198)print(book1)
# Output: The Great Gatsby by F. Scott Fitzgeraldprint(repr(book1))
# Output: Book(The Great Gatsby, F. Scott Fitzgerald, 180)print(book1 book2)
# Output: 378print(book1 book2)
# Output: Falseprint(book1 Book(The Great Gatsby, F. Scott Fitzgerald, 180))
# Output: True运动
输入输出
输入
name input(Please enter your name: )
#输入
n int(input())#默认输入尾string类型,可以格式化为int,float
print(Hello, name)
sets set(input(|).split()[1:])#获取以|分割后的第二个至行尾的所有单词nums input().split() # 将字符串分割成多个子串
arr [float(x) for x in nums] # 将每个子串转换成浮点数类型得到一个浮点数列表输出
# 普通输出
print(Hello, World!)
# python的每句print自动换行,不需要换行则加end
print(Hello, World!, end)
print( Welcome to Python.)
# 格式化输出
name John
age 30
## 三种格式化
print(My name is {} and I am {} years old..format(name, age))
print(fMy name is {name} and I am {age} years old.) #Python 3.6引入
print(My name is %s and I am %d years old. % (name, age))
## 控制小数位数
value 3.1415926
print(The value of pi is {:.2f}..format(value))
##占位长度以及左右对齐
print(My name is {:10} and I am {:10} years old..format(name, age))
输出如下
Hello, World!
Hello, World! Welcome to Python.
My name is John and I am 30 years old.
My name is John and I am 30 years old.
My name is John and I am 30 years old.
The value of pi is 3.14.
My name is John and I am 30 years old.逻辑
比较运算,位运算,赋值运算逻辑运算与and、或or和非not成员运算在序列字符串、列表、元组中检查成员in 和 not in身份运算检查对象是否是同一个is 和 is not
控制语句
for i in range(1, 11):if i 5:continueprint(i)
while True:user_input input(请输入任意字符输入q退出: )if user_input q:breakprint(你输入的字符是: user_input)单条件 类似于 c语言中的? :
x 10
y 20
max_value x if x y else y
print(max_value) # 输出结果为20函数
#定义计算平方的函数
def square(x):result x * xreturn result列表推导式
square_list [x**2 for x in range(1, 11)]
print(square_list)
#输出如下[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]#统计数组中的重复数字个数
len(set([x for x in nums if x ! 0]))#每个单词的第一个数字
words [apple, banana, cherry, dragonfruit, elderberry, fig]
first_letters {word[0] for word in words}
print(first_letters)
#输出如下{c, b, a, e, d, f}应用
打包
先安装pip install pyinstaller
然后pyinstaller --onefile -w D:\code\scripts\py\learn.py
打包并包含库文件,并隐藏命令行窗口
虚拟环境
使用虚拟环境打包可以让可执行文件更小
使用python3.6以上自带的venv,在vscode的PS终端中执行以下命令
#创建虚拟环境
python -m venv test_env
#激活环境
.\test_env\Scripts\Activate.ps1#执行不了就先Set-ExecutionPolicy RemoteSigned
#然后安装包
pip list#查看
pip install pandas#安装
#退出环境
deactivateTkinter
界面
基于tkinter,需要先安装库pip install ttkbootstrap tkinter
布局
三种布局方式:
pack相对用户来说不需要做过多操作就可以自动元素排列适合于整体布局
grid布局相对来说有板有眼适合那种规规矩矩的布局
place布局适合那种对细节要求严丝合缝的场合pack
widgets.pack(pack_options) 这个是函数原型pack_options有三个常用属性分别是expand fillside这三个属性expand 是否扩展当它设置为true的时候它会沾满父组件的空间当然这是在其它同级元素布局剩下之后的空间。
fill 是填充的意思它可以指定填充的方向比如我们想要一个button或者label占满一行我们可以就可以设置fill tk.X 其中tk是tkiner的简写import tkinter as tk
side是一侧的意思比如我们要让两个button并排显示可以一个设置sidetk.LEFT一个设置为tk.RIGHT
pdx,pdy是用来设置距离左右上下的位置的有了他们我们就可以灵活设置组件的布局了示例
import tkinter as tk
root tk.Tk()
root.title(upack布局演示)
tk.Button(root, textside:top).pack(sidetop)
tk.Button(root, textside:bottom).pack(sidebottom)
tk.Button(root, textside:left).pack(sideleft)
tk.Button(root, textside:right).pack(sideright)
root.mainloop()grid
grid有4个可选参数分别是row,rowspan,column,columnspanstickyrow指的是排在第一行
rowspan指的是占有多少行
column指的是排在第几列
columnspan指的是占有几列
sticky粘性指的就是对齐固定方式有nswe4个方位分别是上北下南左西右东nnouth,ssouth,eeast,wwest示例
import tkinter as tk
root tk.Tk()
root.title(ugrid布局演示)
for row in range(3):for col in range(4):text_ row%d, col%d % (row, col)tk.Button(root, texttext_).grid(rowrow, columncol)
root.mainloop()place
坐标布局使用place进行元素的位置放置它有x,y两参数可以用来指定距离父组件的左上角的横坐标距离和纵坐标距离。实战
一个利用tkinter实现逐差法,和作散点图
另外还有更换背景功能
import tkinter as tk
from ttkbootstrap import Style
from tkinter import messagebox
from PIL import Image, ImageTk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import osdata []def background(window):def resize_image():new_width window.winfo_width()new_height window.winfo_height()resized_image original_image.resize((new_width, new_height))new_photo ImageTk.PhotoImage(resized_image)background_label.config(imagenew_photo)background_label.image new_photocurrent_path os.path.realpath(__file__)current_directory os.path.dirname(current_path)jpg_path os.path.join(current_directory, background.jpg)original_image Image.open(jpg_path)photo ImageTk.PhotoImage(original_image)background_label tk.Label(window, imagephoto)background_label.place(x0, y0, relwidth1, relheight1) # 设置Label的相对大小使其铺满整个窗口window.bind(Configure, lambda event: resize_image())def create_input(window, text, data_var):data_frame tk.Frame(window)data_label tk.Label(data_frame, texttext, font(Arial, 16), width15)data_label.pack(sidetk.LEFT)data_entry tk.Entry(data_frame, textvariabledata_var)data_entry.pack(sidetk.LEFT)# return data_framedata_frame.pack()def create_window(text, command):tk.Button(root, texttext, font(Arial, 30), width10, height2, commandcommand).pack(pady10)def full_window(window):w window.winfo_screenwidth()h window.winfo_screenheight()window.geometry(%dx%d % (w, h))def create_button(window, text, command):tk.Button(window, texttext, font(Arial, 16), width12, height1, commandcommand).pack(pady10)def create_table(num, table_frame):try:global datadata.clear()rows (num 9) // 10cols min(num, 10)for i in range(rows):row []if i rows - 1 and num % 10 ! 0:cols num % 10for j in range(cols):entry tk.Entry(table_frame, width6)entry.grid(rowi, columnj)row.append(entry)data.append(row)except ValueError:messagebox.showerror(错误, 请输入有效的数据个数)def center_window(root, width, height):screenwidth root.winfo_screenwidth() # 获取显示屏宽度screenheight root.winfo_screenheight() # 获取显示屏高度size %dx%d%d%d % (width,height,(screenwidth - width) / 2,(screenheight - height) / 2,) # 设置窗口居中参数root.geometry(size)def sub_window_style(window):# window.title()center_window(window, 800, 600)background(window)def diff():def calc():try:global datanums [float(entry.get()) for row in data for entry in row]n2 len(nums)n n2 // 2print(n)result sum([nums[i n] - nums[i] for i in range(n)]) / (n * n)result_text.insert(tk.END, f逐差法结果为{result}\n)except ValueError:messagebox.showerror(错误, 表格中存在非数字的输入)window tk.Toplevel(root)sub_window_style(window)data_N tk.IntVar()create_input(window, 数据个数, data_N)table_frame tk.Frame(window)create_button(window, text生成表格, commandlambda: create_table(data_N.get(), table_frame))table_frame.pack()create_button(window, text计算, commandcalc)result_text tk.Text(window, height30, width45)result_text.pack()def plot():def gen_table(num, table_frame):global datadata.clear()rows 2cols numfor i in range(rows):row []for j in range(cols):entry tk.Entry(table_frame, width6)entry.grid(rowi, columnj)row.append(entry)data.append(row)def calc():try:global datax [float(entry.get()) for entry in data[0]]y [float(entry.get()) for entry in data[1]]# 生成折线图plt.figure(figsize(6, 4))plt.plot(x, y, markero, labelData)plt.xlabel(X)plt.ylabel(Y)# plt.title(折线图)plt.legend()# 在tkinter窗口中显示折线图canvas FigureCanvasTkAgg(plt.gcf(), masterwindow)canvas_widget canvas.get_tk_widget()canvas_widget.pack(sidetk.BOTTOM, filltk.BOTH, expandTrue)except ValueError:messagebox.showerror(错误, 表格中存在非数字的输入)window tk.Toplevel(root)sub_window_style(window)# 创建输入data_N tk.IntVar()create_input(window, 数据个数: , data_N)table_frame tk.Frame(window)create_button(window, 生成表格, lambda: gen_table(data_N.get(), table_frame))table_frame.pack()create_button(window, 生成折线图, lambda: calc())style Style(themedarkly)
root style.master
root.title(主窗口)
full_window(root)background(root)create_window(逐差法, lambda: diff())
create_window(作图, lambda: plot())
root.mainloop()