当前位置: 首页 > news >正文

Python基础小项目

今天给大家写一期特别基础的Python小项目,欢迎大家支持,并给出自己的完善修改
(因为我写的都是很基础的,运行速率不是很好的

目录

  • 1. 地铁票价
    • 题目
    • 程序源码
    • 运行截图
  • 2. 购物车
    • 题目
    • 程序源码
    • 运行截图
  • 3. 名片管理器
    • 题目
    • 程序源码
    • 运行截图
  • 4. 用户交换显示
    • 题目
    • 程序源码
    • 运行截图
  • 总结

1. 地铁票价

题目

地铁票价
地铁交通价格调整为:6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。
使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;
支出累计达到400元以后的乘次,不再享受打折优惠。

要求:
假设每个月,小明都需要上20天班,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;
每月月初小明第一次刷公交卡时,扣款5元;
编写程序,从键盘获取距离,帮小明计算,如果不使用市政交通一卡通的每月总费用,和使用市政交通一卡通的每月总费用。

这个我写的时候用了巨多的if嵌套,效率巨低

程序源码

# 使用巨多if嵌套,效率很低
while True:day = 1j = 1money = 0print("== 请输入距离 或 按'q'退出 ==")distance = input(">>> ")   # 设置距离if distance.isdecimal():distance = int(distance)if distance > 0:print("\n== 是不是一卡通? 'y'是 'n'不是==")yikatong = input(">>>[y/n] ")if yikatong.lower() == "y":     #把输入的字母变成小写while day <= 20:j = 1while j <= 2:if money < 100:if distance <= 6:money += 3if distance > 6 and distance <= 12:money += 4if distance > 12 and distance <= 22:money += 5if distance > 22 and distance <= 32:money += 6if distance > 32:money += ((distance - 33) // 20) + 6 + 1elif money >= 100 and money < 150:if distance <= 6:money += 3 * 0.8if distance > 6 and distance <= 12:money += 4 * 0.8if distance > 12 and distance <= 22:money += 5 * 0.8if distance > 22 and distance <= 32:money += 6 * 0.8if distance > 32:money += (((distance - 33) // 20) + 6 + 1) * 0.8elif money >= 150 and money < 400:if distance <= 6:money += 3 * 0.5if distance > 6 and distance <= 12:money += 4 * 0.5if distance > 12 and distance <= 22:money += 5 * 0.5if distance > 22 and distance <= 32:money += 6 * 0.5if distance > 32:money += (((distance - 33) // 20) + 6 + 1) * 0.5elif money > 400:if distance <= 6:money += 3if distance > 6 and distance <= 12:money += 4if distance > 12 and distance <= 22:money += 5if distance > 22 and distance <= 32:money += 6if distance > 32:money += (((distance - 33) // 20) + 6 + 1)j += 1day += 1money += 5print("\n你的总花费为:%.4f元\n" % money)elif yikatong.lower() == "n":   #把输入的字母变成小写while day <= 20:j = 1while j <= 2:if distance <= 6:money += 3if distance > 6 and distance <= 12:money += 4if distance > 12 and distance <= 22:money += 5if distance > 22 and distance <= 32:money += 6if distance > 32:money += ((distance - 33) // 20) + 6 + 1j += 1day += 1money += 5print("你的总花费为:%.4f元" % money)else:print("\nXX 输入有误请重新输入 XX")else:print("必须大于0,请从新输入")elif distance.lower() == "q":breakelse:print("必须是数字,而且大于0,请从新输入")

运行截图

在这里插入图片描述

2. 购物车

题目

购物车

如下商品列表
goods = [
{“name”: “电脑”, “price”: 1000},
{“name”: “Iphone”, “price”: 1200},
{“name”: “豪车”, “price”: 3280},
{“name”: “别墅”, “price”: 6500},
{“name”: “游艇”, “price”: 5800},
{“name”: “美女”, “price”: 2500},
]

完成以下要求:
要求用户输入总资产,列入:15000
判断驶入的金额能否购买价格最低的商品,如果不能让用户重新输入
显示商品列表,让用户根据序号选择商品,加入购物车
查看购物车,购物车内如果有相同的产品不要重复显示,以产品后面加数字形式表示此产品在购物车有两个或两个以上
结算时,判断购物车是否为空,如果为空则提示填充购物车
可以让用户删除购物车内的产品,或清空购物车
结算时如果余额不足,则提示账户余额不足

程序源码


goods = [{"name": "电脑", "price": 1000},{"name": "Iphone", "price": 1200},{"name": "豪车", "price": 3280},{"name": "别墅", "price": 6500},{"name": "游艇", "price": 5800},{"name": "美女", "price": 2500},
]
while True:q = 0money = []shopping_cart = []for i, v in enumerate(goods, 1):money.append(v["price"])print("请输入您的总金额")salary = input(">>> ")if salary.isdecimal():  # 判断只让输入十进制数字salary = int(salary)money.sort()if salary <= 0:print("\n你玩我呢,没钱还来买\n")print("直接退出")breakelif salary > 0 and salary < money[0]:  # 判断输入的金额能否购买价格最低的商品print("你的金额买不起任何一个东西\n")elif salary > money[0]:while True:all_price = 0print("\33[36;1m商品列表\33[1m".center(40, "="))for i, v in enumerate(goods, 1):print("%d %s \33[34;1m%d\33[1m" % (i, v["name"].ljust(4, " "), v["price"]))print("请输入产品\33[31;1m序号\33[1m添加到购物车、返回上一层请按 \33[31;1mP \33[1m、完全退出请按 \33[31;1mQ\33[1m")seq_num = input(">>> ")if seq_num.lower() == "p":breakif seq_num.lower() == "q":q = 1breakif seq_num.isdecimal():seq_num = int(seq_num)if seq_num > 0 and seq_num <= len(goods):shopping_cart.append(goods[seq_num - 1])for y in shopping_cart:all_price += y["price"]print("\33[33;1m%s\33[1m 已添加到购物车\n" % (goods[seq_num - 1]["name"]))while True:print("继续添加产品请按 \33[31;1mC\33[1m 、结算请按 \33[31;1mB\33[1m 、查看购物车请按 \33[31;1mS\33[1m 、完全退出请按 \33[31;1mQ\33[1m")final_cho = input(">>> ")if final_cho.lower() == "c":breakelif final_cho.lower() == "b":while True:print("您的余额为:\33[34;1m%d\33[1m 您购买的商品总价为:\33[34;1m%d\33[1m 确定购买吗? 确定 \33[31;1mY\33[1m 取消 \33[31;1mN\33[1m" % (salary, all_price))confirm_bill = input(">>> ")if confirm_bill.lower() == "y":if shopping_cart != []:if salary >= all_price:salary = salary - all_priceprint("购买成功\n")all_price = 0shopping_cart = []breakelif salary < all_price:print("-_-!余额不足\n")breakelif shopping_cart == []:print("购物车空空如也,填充后再来吧\n")breakelif confirm_bill.lower() == "n":breakelse:print("输入有误,请重新输入\n")elif final_cho.lower() == "s":while True:print("\33[35;1m购物车\33[1m".center(40, "="))temp_cart = []for y in shopping_cart:if y not in temp_cart:temp_cart.append(y)for m, z in enumerate(temp_cart, 1):print("%d %s \33[34;1m%d\33[1m %d个" % (m, z["name"].ljust(4, " "), z["price"], shopping_cart.count(z)))print("\n购物车商品总金额为:\33[34;1m%d\33[1m" % all_price)print("您的余额为:\33[34;1m%d\33[1m" % salary)print("按\33[31;1m序号\33[1m可删除商品 、继续请按 \33[31;1mC\33[1m 、清空购物车请按 \33[31;1mE\33[1m")ctrl_shop_cart = input(">>> ")if ctrl_shop_cart.lower() == "c":breakelif ctrl_shop_cart.lower() == "e":all_price = 0shopping_cart = []print("以清空购物车")breakelif ctrl_shop_cart.isdecimal():ctrl_shop_cart = int(ctrl_shop_cart)if ctrl_shop_cart > 0 and ctrl_shop_cart <= len(temp_cart):all_price = all_price - temp_cart[ctrl_shop_cart - 1]["price"]shopping_cart.reverse()shopping_cart.remove(temp_cart[ctrl_shop_cart - 1])shopping_cart.reverse()print("删除成功\n")else:print("输入超出范围,请重新输入")else:print("输入有误,请重新输入\n")elif final_cho.lower() == "q":q = 1breakelse:print("输入有误,请重新输入\n")else:print("数字超出范围,请重新输入\n")else:print("请输入数字\n")if q == 1:breakelse:print("\n只能输入数字,请重新输入\n")if q == 1:break

运行截图

在这里插入图片描述
在这里插入图片描述

3. 名片管理器

题目

名片管理器
需要完成的基本功能:
添加名片
删除名片
修改名片
查询名片
退出系统
程序运行后,除非选择退出系统,否则重复执行功能。

程序源码

print("=" * 20)
print("==\t学生名片管理系统")
print("1:添加名片")
print("2:删除名片")
print("3:修改名片")
print("4:查找名片")
print("5:显示名片")
print("6:退出")
print("=" * 20)
all_li = []
while True:print("\n==请输入序号==")first_num = input(">>> ")if first_num.isdecimal():first_num = int(first_num)if first_num == 1:dic_one = {}print("请输入要添加的名字")name = input(">>> ")print("请输入%s的年龄" % name )age = input(">>>")print("请输入%s的学号" % name)stu_num = input(">>> ")print("请输入%s的微信" % name)weixin = input(">>> ")dic_one["name"] = namedic_one["age"] = agedic_one["stu_num"] = stu_numdic_one["weixin"] = weixinall_li.append(dic_one)print("==添加成功==")elif first_num == 2:while True:print("\n==请输入要删除的名字==")del_name = input(">>> ")count = 0f = 0for i in all_li:count += 1if i["name"] == del_name:count -= 1f = 1breakif f == 0:print("找不到你要找的名字,请重新输入")continuedel all_li[count]print("删除成功")breakelif first_num == 3:while True:print("请输入要修改的名字")mod_name = input(">>> ")count = 0f = 0for i in all_li:count += 1if i["name"] == mod_name:count -= 1f = 1if f == 0:print("找不到你要找的名字,请重新输入")continueprint("\n==名字已找到,想修改对应此名的哪项选项==")print("1:名字 2:年龄 3:学号 4:微信")while True:print("== 请输入对应的序号 ==")mod_num = input(">>> ")if mod_num.isdecimal():mod_num = int(mod_num)if mod_num == 1:print("\n请输入你要修改的名字")mod_name2 = input(">>> ")all_li[count]["name"] = mod_name2print("修改成功")breakif mod_num == 2:print("\n请输入%s的新年龄" % all_li[count]["name"])mod_age = input(">>> ")all_li[count]["age"] = mod_ageprint("修改成功")breakif mod_num == 3:print("\n请输入%s的新学号" % all_li[count]["name"])mod_stu_num = input(">>> ")all_li[count]["stu_num"] = mod_stu_numprint("修改成功")breakif mod_num == 3:print("\n请输入%s的新微信" % all_li[count]["name"])mod_weixin = input(">>> ")all_li[count]["weixin"] = mod_weixinprint("修改成功")breakelse:print("输入有误,重新输入")breakelif first_num == 4:while True:print("\n==请输入要查找的名字==")c = 0find_name = input(">>> ")for i in all_li:if i["name"] == find_name:print("名字\t\t年龄\t\t学号\t\t微信")print("%s\t\t%s\t\t%s\t\t%s"%(i["name"],i["age"],i["stu_num"],i["weixin"]))else:print("找不到你要找的名字请重新输入")c = 1if c == 1:continuebreakelif first_num == 5:result = "名字\t年龄\t学号\t微信"print(result.expandtabs(20))for i in all_li:result2 = "%s\t%s\t%s\t%s"%(i["name"],i["age"],i["stu_num"],i["weixin"])print(result2.expandtabs(20))elif first_num == 6:breakelse:print("输入超出范围,请重新输入")else:print("输入有误,请重新输入")

运行截图

在这里插入图片描述

4. 用户交换显示

题目

比如有如下形式的字典

city = {“北京”: {“朝阳”: [“望京”, “大望路”], “昌平”: [“沙河”, “小昌平”]},
“延边”: {“延吉”: [“北大”, “铁南”], “龙井”: [“图们”, “珲春”]},
“上海”: {“新上海”: [“浦东”, “浦西”], “老上海”: [“上海滩”, “不夜城”]}}
完成以下要求:
允许用户增加内容
允许用户查看某一个级别的内容
即可查看内容也可修改内容
也可删除内容
每一级的循环嵌套必须包含返回上一层,也包含全部退出

程序源码

city = {"北京": {"朝阳": ["望京", "大望路"], "昌平": ["沙河", "小昌平"]},"延边": {"延吉": ["北大", "铁南"], "龙井": ["图们", "珲春"]},"上海": {"新上海": ["浦东", "浦西"], "老上海": ["上海滩", "不夜城"]}}while True:p = 0q = 0print("\33[35;1m一级列表\33[1m".center(50,"="))for i,v in enumerate(city,1):print(i,v)print("添加请按\33[31;1m A\33[1m 、查看请按\33[31;1m 序号\33[1m 、退出请按\33[31;1m Q\33[1m")init_cho = input(">>> ")if init_cho.lower() == "q":breakelif init_cho.isdecimal():init_cho = int(init_cho)if init_cho > 0 and init_cho <= len(city):while True:first_li = []for i, v in enumerate(city, 1):first_li.append(v)print("删除\33[31;1m%s\33[1m请按\33[31;1m Y\33[1m 、修改请按\33[31;1m M\33[1m 、返回上一级请按\33[31;1m P\33[1m 、进入下一级请按\33[31;1m N\33[1m 、全部退出请按\33[31;1m Q\33[1m"% first_li[init_cho-1])deci_cho = input(">>> ")if deci_cho.lower() == "y":del city[first_li[init_cho-1]]print("删除成功,自动跳回上一级")breakelif deci_cho.lower() == "q":q = 1breakelif deci_cho.lower() == "p":breakelif deci_cho.lower() == "m":print("您要改成什么名字?")mod_sheng_name = input(">>>")if mod_sheng_name.isalpha():city[mod_sheng_name] = city.pop(first_li[init_cho-1])print("修改成功")elif deci_cho.lower() == "n":while True:p2 = 0second_li = []print("\33[34;1m二级列表\33[1m".center(50,"="))for x, y in enumerate(city[first_li[init_cho-1]], 1):print(x, y)second_li.append(y)print("请按\33[31;1m序号\33[1m选择、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m")sec_cho = input(">>> ")if sec_cho.lower() == "p":p = 1breakelif sec_cho.lower() == "q":q = 1breakelif sec_cho.isdecimal():sec_cho = int(sec_cho)if sec_cho > 0 and sec_cho <= len(city[first_li[init_cho - 1]]):while True:print("删除\33[31;1m%s\33[1m请按\33[31;1m Y\33[1m 、修改请按\33[31;1m M\33[1m 、返回上一级请按\33[31;1m P\33[1m 、进入下一级请按\33[31;1m N\33[1m 、全部退出请按\33[31;1m Q\33[1m"% second_li[sec_cho-1])third_cho = input(">>> ")if third_cho.lower() == "y":del city[first_li[init_cho-1]][second_li[sec_cho-1]]print("删除成功,自动跳回上一级")breakelif third_cho.lower() == "m":print("您要改成什么名字?")mod_shi_name = input(">>>")city[first_li[init_cho - 1]][mod_shi_name] = city[first_li[init_cho - 1]].pop(second_li[sec_cho-1])print("修改成功,自动跳回上一级")breakelif third_cho.lower() == "p":breakelif third_cho.lower() == "q":q = 1breakelif third_cho.lower() == "n":while True:print("\33[36;1m三级列表\33[1m".center(50, "="))for t, n in enumerate(city[first_li[init_cho - 1]][second_li[sec_cho - 1]], 1):print(t, n)print("请按\33[31;1m序号\33[1m选择删除或修改、添加请按 \33[31;1mA\33[1m 、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m")last_cho = input(">>> ")if last_cho.isdecimal():last_cho = int(last_cho)while True:if last_cho > 0 and last_cho <= len(city[first_li[init_cho - 1]][second_li[sec_cho - 1]]):print("删除请按 \33[31;1mD\33[1m 、修改请按 \33[31;1mM\33[1m 、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m")one_more_cho = input(">>> ")if one_more_cho.lower() == "d":del city[first_li[init_cho - 1]][second_li[sec_cho - 1]][last_cho - 1]print("删除成功,自动跳回上一层")breakelif one_more_cho.lower() == "m":print("您要改成什么名字?")mod_last = input(">>> ")city[first_li[init_cho - 1]][second_li[sec_cho - 1]][last_cho - 1] = mod_lastprint("修改成功,自动跳回上一层")breakelif one_more_cho.lower() == "p":breakelif one_more_cho.lower() == "q":q = 1breakelse:print("输入有误,请重新输入\n")else:print("输入超出范围,请重新输入\n")elif last_cho.lower() == "a":print("请输入添加的名")add_last = input(">>> ")city[first_li[init_cho - 1]][second_li[sec_cho - 1]].append(add_last)print("添加成功")elif last_cho.lower() == "p":p2 = 1breakelif last_cho.lower() == "q":q = 1breakif q == 1:breakelse:print("输入有误,请重新输入\n")if q == 1:breakif p2 == 1:breakelse:print("输入超出范围,请重新输入\n")else:print("输入有误请重新输入\n")if q == 1:breakif q == 1:breakif p == 1:breakelse:print("输入超出范围,请重新输入\n")elif init_cho.lower() == "a":while True:print("\33[36;1m添加信息\33[1m".center(50, "="))print("请输入省/直辖市、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m")add_sheng = input(">>> ")if add_sheng.lower() == "p":breakelif add_sheng.lower() == "q":q = 1breakelif city.get(add_sheng,0) == 0:city.update({add_sheng:{}})print("添加成功\n")print("请输入市/州、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m")add_shi = input(">>> ")if add_shi.lower() == "p":breakelif add_shi.lower() == "q":q = 1breakelif city[add_sheng].get(add_shi,0) == 0:city[add_sheng].update({add_shi:[]})print("添加成功\n")while True:print("请输入县/街道、可多次写入、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m")add_xian = input(">>> ")if add_xian.lower() == "p":breakif add_xian.lower() == "q":q = 1breakcity[add_sheng][add_shi].append(add_xian)print("添加成功")if q == 1:breakelif init_cho == "5":print(city)else:print("输入有误,请重新输入\n")if q == 1:break

运行截图

在这里插入图片描述

总结

目前这四个小程序写的都是很简单的,用基础的循环嵌套,实现基础的效果,希望对大家有所帮助,同时也是欢迎大家交流探讨,继续优化完善这个程序。

相关文章:

Python基础小项目

今天给大家写一期特别基础的Python小项目&#xff0c;欢迎大家支持&#xff0c;并给出自己的完善修改 &#xff08;因为我写的都是很基础的&#xff0c;运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…...

Python Opencv实践 - 在图像上绘制图形

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png") print(img.shape)plt.imshow(img[:,:,::-1])#画直线 #cv.line(img,start,end,color,thickness) #参考资料&#xff1a;https://blog.csdn.ne…...

管理者应该编码,但不是在工作时

管理者应该编码吗?这个问题似乎没有一个明确的答案。这场辩论有支持者也有反对者&#xff0c;每一方都有自己的论点。我最近在工作中编写了一个副业项目&#xff0c;这让我重新评估了我在这个问题上的立场。经历了这些之后&#xff0c;我可以说&#xff0c;我的立场已经从管理…...

深度学习常用的python库学习笔记

文章目录 数据分析四剑客Numpyndarray数组和标量之间的运算基本的索引和切片数学和统计方法线性代数 PandasMatplotlibPIL 数据分析四剑客 Numpy Numpy中文网 ndarray 数组和标量之间的运算 基本的索引和切片 数学和统计方法 线性代数 Pandas Pandas中文网 Matplotlib Mat…...

C语言属刷题训练【第八天】

文章目录 &#x1fa97;1、如下程序的运行结果是&#xff08; &#xff09;&#x1f4bb;2、若有定义&#xff1a; int a[2][3]; &#xff0c;以下选项中对 a 数组元素正确引用的是&#xff08; &#xff09;&#x1f9ff;3、在下面的字符数组定义中&#xff0c;哪一个有语法错…...

阿里云PolarDB数据库倚天ARM架构详细介绍

阿里云云原生数据库PolarDB MySQL版推出倚天ARM架构&#xff0c;倚天ARM架构规格相比X86架构规格最高降价45%&#xff0c;PolarDB针对自研倚天芯片&#xff0c;从芯片到数据库内核全链路优化&#xff0c;助力企业降本增效。基于阿里云自研的倚天服务器&#xff0c;同时在数据库…...

pytest 编写规范

一、pytest 编写规范 1、介绍 pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要特点有以下几点&#xff1a; 1、简单灵活&#xff0c;容易上手&#xff0c;文档丰富&#xff1b;2、支持参数化&#xff0c;可以细粒度地控制要测试的测试用例&#xff1b;3、能够…...

Vue.use和vue.component的区别

Vue.use 注册全局插件vue.use时会将自动将开发者 vue构造函数传入插件,vue.use参数必须是function或者object,object中必须有install方法vue.use会自动判断当前插件时候已经被注册过了,防止重复注册 Vue.component 注册全局组件 为什么有了Vue.component还要用Vue.use呢 V…...

张驰咨询:提高企业竞争力,六西格玛设计公司(DFSS)在行动

六西格玛设计公司(DFSS)是一种专业从事六西格玛设计的企业&#xff0c;其主要作用是为客户提供高效的六西格玛设计服务&#xff0c;以帮助客户实现高品质、低成本和高效率的产品开发过程。六西格玛设计公司通常拥有一支专业的团队&#xff0c;具有丰富的六西格玛设计经验和技术…...

影响 40% 用户,Ubuntu 发行版被曝 2 个安全漏洞

导读近日消息&#xff0c;Wiz 的研究专家 S. Tzadik 和 S. Tamari 近日在 Ubuntu 系统中发现了 2 个安全漏洞&#xff0c;可以提升本地权限&#xff0c;预估影响 40% 的 Ubuntu 用户。 根据博文内容&#xff0c;汇总两个漏洞内容如下&#xff1a; 追踪编号&#xff1a;CVE-202…...

SpringCache的介绍和入门案例

文章目录 概述常用注解入门案例 概述 Spring Cache是Spring框架提供的一个缓存抽象层&#xff0c;用于在应用程序中实现缓存的功能。它通过在方法执行前检查缓存中是否已经存在所需数据&#xff0c;如果存在则直接返回缓存中的数据&#xff0c;如果不存在则执行方法体&#xf…...

闪马智能又上榜!

近日&#xff0c;上海市经济和信息化委员会公布了2023年度上半年&#xff08;第30批&#xff09;市级企业技术中心拟认定企业名单。凭借在技术创新方面的突出成就&#xff0c;闪马智能上榜其中。 本次认定由上海市经济和信息化委员会组织开展&#xff0c;综合企业的地位和作用、…...

C++中的四种类型转换(Type Casting)方式

在C中&#xff0c;有四种常见的类型转换&#xff08;Type Casting&#xff09;方式&#xff0c;它们分别是&#xff1a; 一、静态转换&#xff08;Static Cast&#xff09;&#xff1a; static_cast是最常见的类型转换方式&#xff0c;用于基本数据类型的转换、非多态类型之间…...

Linux系列:从0到1用Docker部署springboot项目

目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输&#xff08;*&#xff09; 1.点击“文件-新建”​编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…...

zabbix监控mysql数据库、nginx、Tomcat

文章目录 一.zabbix监控mysql数据库1.环境规划2.zabbix-server安装部署&#xff08;192.168.198.17&#xff09;3.zabbix-mysql安装部署&#xff08;192.168.198.15&#xff09;3.1 部署 zabbix 客户端3.2 服务端验证 zabbix-agent2 的连通性&#xff08;192.168.198.17&#x…...

深入探索二叉树算法:理解、构建和应用C语言

引言 二叉树是计算机科学中的一种重要数据结构&#xff0c;它在各种算法和应用中都扮演着重要角色。本篇博客将带您深入探索二叉树的世界&#xff0c;从基本概念到高级应用&#xff0c;逐步展开二叉树的奥秘&#xff0c;助您更好地理解、构建和应用二叉树算法。 什么是二叉树…...

(css)点击前隐藏icon图表 点击后显示

(css)点击前隐藏icon图表 点击后显示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…...

Tomcat的动静分离以及多实例部署

一、动静分离 Nginx实现负载均衡的原理&#xff1a; Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端&#xff0c;Tomcat服务器作为后端&#xff0c;web页面请求由Nginx服务来进行转发。 但不是把所有的web请求转发&#xff0c;而是将静态页面请求Ncinx服务器自己来处…...

uniapp+vue3项目中使用vant-weapp

创建项目 通过vue-cli命令行创建项目 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 uni-app官网 (dcloud.net.cn) npx degit dcloudio/uni-preset-vue#vite my-vue3-project打开项目 点击顶部菜单栏终端/新建终端 执行安装依赖指令 yarn install 或 npm install 安装vant…...

WordPress:实现发布文章自动添加TAG标签

在给我们的WordPress博客更新文章时&#xff0c;大多数人应该会给文章添加一些TAG标签&#xff0c;文章添加TAG标签也是我们做WordPress优化必不可少的一项&#xff0c;但是如果每一篇文章的关键字标签都要手动添加链接&#xff0c;那也太麻烦了。今天给大家分享一篇自动给文章…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...