num = 34564999
pos ='万'
UserPos=['个', '十', '百', '千', '万', '十万', '百万', '千万', '亿', '十亿', '百亿', '千亿']
MyStr=str(num)
if int(MyStr[len(MyStr)-UserPos.index(pos)])<5:
lym=int(MyStr[0:len(MyStr)-UserPos.index(pos)])*int(str(1)+str(0)*UserPos.index(pos))
print('{}精确到{}位是{}'.format(num,pos,lym))
else:
lym=str(num+int(str(1)+str(0)*UserPos.index(pos)))[0:len(MyStr)-UserPos.index(pos)]+str(0)*UserPos.index(pos)
print(lym)
# 时钟
# coding=utf-8
import turtle
from datetime import *
def Skip(step):
turtle.penup()
turtle.forward(step)
turtle.pendown()
def mkHand(name, length):
# 注册Turtle形状,建立表针Turtle
turtle.reset()
Skip(-length * 0.1)
# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.begin_poly()
turtle.forward(length * 1.1)
# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
turtle.end_poly()
# 返回最后记录的多边形。
handForm = turtle.get_poly()
turtle.register_shape(name, handForm)
def Init():
global secHand, minHand, hurHand, printer
# 重置Turtle指向北
turtle.mode("logo")
# 建立三个表针Turtle并初始化
mkHand("secHand", 135)
mkHand("minHand", 125)
mkHand("hurHand", 90)
secHand = turtle.Turtle()
secHand.shape("secHand")
minHand = turtle.Turtle()
minHand.shape("minHand")
hurHand = turtle.Turtle()
hurHand.shape("hurHand")
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)
# 建立输出文字Turtle
printer = turtle.Turtle()
# 隐藏画笔的turtle形状
printer.hideturtle()
printer.penup()
def SetupClock(radius):
# 建立表的外框
turtle.reset()
turtle.pensize(7)
for i in range(60):
Skip(radius)
if i % 5 == 0:
turtle.forward(20)
Skip(-radius - 20)
Skip(radius + 20)
if i == 0:
turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
elif i == 30:
Skip(25)
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-25)
elif (i == 25 or i == 35):
Skip(20)
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-20)
else:
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-radius - 20)
else:
turtle.dot(5)
Skip(-radius)
turtle.right(6)
def Week(t):
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "李", "星期日"]
return week[t.weekday()]
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d%d" % (y, m, d)
def Tick():
# 绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond * 0.000001
minute = t.minute + second / 60.0
hour = t.hour + minute / 60.0
secHand.setheading(6 * second)
minHand.setheading(6 * minute)
hurHand.setheading(30 * hour)
turtle.tracer(False)
printer.forward(65)
printer.write(Week(t), align="center",
font=("Courier", 14, "bold"))
printer.back(130)
printer.write(Date(t), align="center",
font=("Courier", 14, "bold"))
printer.home()
turtle.tracer(True)
# 100ms后继续调用tick
turtle.ontimer(Tick, 100)
def main():
# 打开/关闭龟动画,并为更新图纸设置延迟。
turtle.tracer(False)
Init()
SetupClock(160)
turtle.tracer(True)
Tick()
turtle.mainloop()
if __name__ == "__main__":
main()
写英语文章模板
import time
ti = time.strftime('%Y-%m-%d-(%H%M)', time.localtime(time.time()))
i = 1
article=[]
evolutin=['o(Evolution)o\n',' '+ti+' ','Guangzhou\n','【Goal】\n\n',
'【Problem】\n\n','【Diagnosis】\n\n','【Desin】\n\n','【Fulfilment】\n\n']
while i<=38:
print(str(i)+'.'+'\n【 】')
article.append(str(i)+'.'+'\n【 】\n')
i+=1
print(article)
file=open('E:/'+str(ti)+'.txt','w')
for x in evolutin:
file.write(x)
五子棋
# 调用pygame库
import pygame
import sys
# 调用常用关键字常量
from pygame.locals import QUIT, KEYDOWN
import numpy as np
# 初始化pygame
pygame.init()
# 获取对显示系统的访问,并创建一个窗口screen
# 窗口大小为670x670
screen = pygame.display.set_mode((670, 670))
screen_color = [99, 237, 204] # 设置画布颜色,[238,154,73]对应为棕黄色
line_color = [255, 255, 255] # 设置线条颜色,[0,0,0]对应黑色
def check_win(over_pos): # 判断五子连心
mp = np.zeros([15, 15], dtype=int)
for val in over_pos:
x = int((val[0][0] - 27) / 44)
y = int((val[0][1] - 27) / 44)
if val[1] == white_color:
mp[x][y] = 2 # 表示白子
else:
mp[x][y] = 1 # 表示黑子
for i in range(15):
pos1 = []
pos2 = []
for j in range(15):
if mp[i][j] == 1:
pos1.append([i, j])
else:
pos1 = []
if mp[i][j] == 2:
pos2.append([i, j])
else:
pos2 = []
if len(pos1) >= 5: # 五子连心
return [1, pos1]
if len(pos2) >= 5:
return [2, pos2]
for j in range(15):
pos1 = []
pos2 = []
for i in range(15):
if mp[i][j] == 1:
pos1.append([i, j])
else:
pos1 = []
if mp[i][j] == 2:
pos2.append([i, j])
else:
pos2 = []
if len(pos1) >= 5:
return [1, pos1]
if len(pos2) >= 5:
return [2, pos2]
for i in range(15):
for j in range(15):
pos1 = []
pos2 = []
for k in range(15):
if i + k >= 15 or j + k >= 15:
break
if mp[i + k][j + k] == 1:
pos1.append([i + k, j + k])
else:
pos1 = []
if mp[i + k][j + k] == 2:
pos2.append([i + k, j + k])
else:
pos2 = []
if len(pos1) >= 5:
return [1, pos1]
if len(pos2) >= 5:
return [2, pos2]
for i in range(15):
for j in range(15):
pos1 = []
pos2 = []
for k in range(15):
if i + k >= 15 or j - k < 0:
break
if mp[i + k][j - k] == 1:
pos1.append([i + k, j - k])
else:
pos1 = []
if mp[i + k][j - k] == 2:
pos2.append([i + k, j - k])
else:
pos2 = []
if len(pos1) >= 5:
return [1, pos1]
if len(pos2) >= 5:
return [2, pos2]
return [0, []]
def find_pos(x, y): # 找到显示的可以落子的位置
for i in range(27, 670, 44):
for j in range(27, 670, 44):
L1 = i - 22
L2 = i + 22
R1 = j - 22
R2 = j + 22
if x >= L1 and x <= L2 and y >= R1 and y <= R2:
return i, j
return x, y
def check_over_pos(x, y, over_pos): # 检查当前的位置是否已经落子
for val in over_pos:
if val[0][0] == x and val[0][1] == y:
return False
return True # 表示没有落子
flag = False
tim = 0
over_pos = [] # 表示已经落子的位置
white_color = [0, 0, 255] # 白棋颜色
black_color = [255, 0, 0] # 黑棋颜色
while True: # 不断训练刷新画布
for event in pygame.event.get(): # 获取事件,如果鼠标点击右上角关闭按钮,关闭
if event.type in (QUIT, KEYDOWN):
sys.exit()
screen.fill(screen_color) # 清屏
for i in range(27, 670, 44):
# 先画竖线
if i == 27 or i == 670 - 27: # 边缘线稍微粗一些
pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 4)
else:
pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 2)
# 再画横线
if i == 27 or i == 670 - 27: # 边缘线稍微粗一些
pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 4)
else:
pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 2)
# 在棋盘中心画个小圆表示正中心位置
pygame.draw.circle(screen, line_color, [27 + 44 * 7, 27 + 44 * 7], 8, 0)
for val in over_pos: # 显示所有落下的棋子
pygame.draw.circle(screen, val[1], val[0], 20, 0)
# 判断是否存在五子连心
res = check_win(over_pos)
if res[0] != 0:
for pos in res[1]:
pygame.draw.rect(screen, [238, 48, 167], [pos[0] * 44 + 27 - 22, pos[1] * 44 + 27 - 22, 44, 44], 2, 1)
pygame.display.update() # 刷新显示
continue # 游戏结束,停止下面的操作
# 获取鼠标坐标信息
x, y = pygame.mouse.get_pos()
x, y = find_pos(x, y)
if check_over_pos(x, y, over_pos): # 判断是否可以落子,再显示
pygame.draw.rect(screen, [0, 229, 238], [x - 22, y - 22, 44, 44], 2, 1)
keys_pressed = pygame.mouse.get_pressed() # 获取鼠标按键信息
# 鼠标左键表示落子,tim用来延时的,因为每次循环时间间隔很断,容易导致明明只按了一次左键,却被多次获取,认为我按了多次
if keys_pressed[0] and tim == 0:
flag = True
if check_over_pos(x, y, over_pos): # 判断是否可以落子,再落子
if len(over_pos) % 2 == 0: # 黑子
over_pos.append([[x, y], black_color])
else:
over_pos.append([[x, y], white_color])
# 鼠标左键延时作用
if flag:
tim += 1
if tim % 50 == 0: # 延时200ms
flag = False
tim = 0
pygame.display.update() #
计算器
# 创建一个名为tkinter的别名
import tkinter as tk
# 定义一个函数,用于在文本框中添加数字
def button_click(number):
# 获取当前文本框中的内容
current = entry.get()
# 清空文本框
entry.delete(0, tk.END)
# 在文本框中插入新的内容
entry.insert(tk.END, current + str(number))
# 定义一个函数,用于清空文本框
def button_clear():
# 清空文本框
entry.delete(0, tk.END)
# 定义一个函数,用于计算表达式并在输出框中显示结果
def button_equal():
# 获取文本框中的表达式
expression = entry.get()
try:
# 计算表达式的结果
result = eval(expression)
# 清空输出框
output_text.delete("1.0", tk.END)
# 在输出框中插入结果
output_text.insert(tk.END, "结果: " + str(result))
except Exception as e:
# 清空输出框
output_text.delete("1.0", tk.END)
# 在输出框中插入错误信息
output_text.insert(tk.END, "错误: " + str(e))
# 创建一个名为root的窗口
root = tk.Tk()
root.title("计算器")
# 创建一个名为entry_frame的框架,并将其放置在窗口的第一行
entry_frame = tk.Frame(root)
entry_frame.grid(row=0, column=0, columnspan=5, padx=10, pady=10)
# 创建一个名为output_frame的框架,并将其放置在窗口的第二行
output_frame = tk.Frame(root)
output_frame.grid(row=1, column=0, columnspan=5, padx=10, pady=5)
# 创建一个名为entry的文本框,并将其放置在entry_frame中
entry = tk.Entry(entry_frame, width=35, borderwidth=5)
entry.pack()
# 创建一个名为output_text的文本框,并将其放置在output_frame中
output_text = tk.Text(output_frame, height=1, width=30)
output_text.pack()
# 创建一个包含所有按钮的列表
buttons = [
("7", 1, 2), ("8", 2, 2), ("9", 3, 2), ("/", 4, 2), # 数字键和除号
("4", 1, 3), ("5", 2, 3), ("6", 3, 3), ("*", 4, 3), # 数字键和乘号
("1", 1, 4), ("2", 2, 4), ("3", 3, 4), ("-", 4, 4), # 数字键和减号
("0", 1, 5), ("C", 2, 5), ("=", 3, 5), ("+", 4, 5) # 数字键、清空键和加号
]
# 遍历按钮列表,并创建每个按钮
for button in buttons:
text, column, row = button
if text == "=":
# 创建一个计算结果的按钮
btn = tk.Button(root, text=text, padx=40, pady=20, command=button_equal)
else:
# 创建一个数字按钮
btn = tk.Button(root, text=text, padx=40, pady=20, command=lambda text=text: button_click(text))
# 将按钮放置在窗口中
btn.grid(row=row, column=column, padx=5, pady=5)
# 创建一个名为btn_clear的按钮,并将其放置在窗口的第七行
btn_clear = tk.Button(root, text="Clear", padx=150, pady=20, command=button_clear)
btn_clear.grid(row=6, column=0, columnspan=5, padx=10, pady=5)
# 进入主事件循环
root.mainloop()
格式转换
import time
import datetime
AnyDay=[2023,3,21] #input a date such as 2023/3/21
AnyDBDay=19437 #input a data such as 19437
DBToday=round(time.time()/86400)
Day2DB=round(time.mktime(datetime.datetime(AnyDay[0],AnyDay[1],AnyDay[2],).timetuple())/86400)
DB2Day=time.ctime(AnyDBDay*86400)[4:].replace('08:00:00 ','').replace(' ','/')
print('The date of database today is '+str(DBToday))
print('The common date '+str(AnyDay).replace(', ','/').strip('[] ',)+' equals database date '+str(Day2DB))
print('The database date '+str(AnyDBDay)+' equals common date '+str(DB2Day))
标签:turtle,四舍五入,15,text,tk,pos2,pos1
From: https://blog.51cto.com/dcboy/7799088