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

java经验快速学习python!


title: java经验快速学习python!
date: 2025-02-19 01:52:05
tags:

  • python
  • 学习路线

java经验快速学习python!

    • 本篇文档会一直更新!!!
    • 变量、分支结构、循环结构、数据结构【列表、元组、集合字典】
    • python常用内置函数
      • 元组和列表的比较
    • 字符串占位符
    • 函数的使用进阶,以及函数的高级应用

前言:现在python的应用方向越来越多了,如日中天的DeepSeek也是python开发的,目前现在的大学生学习的也是python语言,感受到了,这是一个趋势,不能不了解这门语言了。

本篇文档会一直更新!!!

通过在github开源100天可以看到,按照上面的学习路线结合人工智能的定向方案,一起学习。

下方图片:我半年以前是有学习过一遍了,太久没用了,过一遍基础操作,半小时理解一下。

变量、分支结构、循环结构、数据结构【列表、元组、集合字典】

image-20250219015702357

import math
# 学习python的输入输出打印 +变量定义
print(123.456)
print(1.23456e2)
radius=float(input('请输入圆的半径:'))
print(radius)
area=math.pi * radius ** 2
print(f'面积: {area}')
print(f'面积: {area:.2f}')# 学习类型转换 +打印输出格式化 +判断语句 ifelse和match+case
height = float(input('身高(cm):'))
weight = float(input('体重(kg):'))
bmi = weight / (height / 100) ** 2
print(f'{bmi = :.1f}')
if 18.5 <= bmi < 24:print('你的身材很棒!')status=int(input("响应状态码:"))
match status:case 400:description='Bad Request'case 401:description='Unauthorized'case 402:description='Forbidden'case 403:description='Forbidden'case 500 |501:description='Server Error'case _:description='Unknown Error'
print('状态码:',description)
# 学习 range 函数+ time模块sleep休眠函数
import timefor i in range(10,100):print(i)print('Hello World!')time.sleep(1)
# 学习random 随机数+range函数生成1-5999的数字
import randomf1=0
f2=0
f3=0
f4=0
f5=0
f6=0
for i in range(6000):face=random.randrange(1,7)if face==1:f1+=1elif face==2:f2+=2elif face==3:f3+=3elif face==4:f4+=4elif face==5:f5+=5elif face==6:f6+=6
print(f'1点出现了{f1}次')
print(f'2点出现了{f2}次')
print(f'3点出现了{f3}次')
print(f'4点出现了{f4}次')
print(f'5点出现了{f5}次')
print(f'6点出现了{f6}次')
# 学习列表 取值与定义,可以点进去具体方法里面看都有什么类型的方法
items=list(range(100))
print(items)items=['Python','Java','C++','C#','JavaScript']
if 'Python' in items:items.reverse()
print(items)

python常用内置函数

image-20250219015305219

元组和列表的比较

这里还有一个非常值得探讨的问题,Python 中已经有了列表类型,为什么还需要元组这样的类型呢?这个问题对于初学者来说似乎有点困难,不过没有关系,我们先抛出观点,大家可以一边学习一边慢慢体会。

  1. 元组是不可变类型,不可变类型更适合多线程环境,因为它降低了并发访问变量的同步化开销。关于这一点,我们会在后面讲解并发编程的时候跟大家一起探讨。
  2. 元组是不可变类型,通常不可变类型在创建时间上优于对应的可变类型。我们可以使用timeit模块的timeit函数来看看创建保存相同元素的元组和列表各自花费的时间,timeit函数的number参数表示代码执行的次数。下面的代码中,我们分别创建了保存19的整数的列表和元组,每个操作执行10000000次,统计运行时间。
import timeitprint('%.3f 秒' % timeit.timeit('[1, 2, 3, 4, 5, 6, 7, 8, 9]', number=10000000))
print('%.3f 秒' % timeit.timeit('(1, 2, 3, 4, 5, 6, 7, 8, 9)', number=10000000))
items=list(range(100))
print(items)items=['Python','Java','C++','C#','JavaScript']
if 'Python' in items:items.reverse()
print(items)#同类型三元组
t1=(32,45,96)
# 不同类型四元组
t2=(23,'zhangsan',True,'lisi')
# 学习type函数,查看变量的类型
print(type(t1))
print(type(t2))
# 学习 len函数,查看变量的数量
print(len(t1))
print(len(t2))
# 学习 元组的索引计算
print(t1[0])
print(t1[1])
print(t1[-1])
print(t1[-2])
#学习切片运算
print(t2[:2]) # 切片,在切片第2个元素前结束
print(t2[::3]) # 切片,从0开始,在下标3前结束
# 循环打印元组元素
for i in t1:print(i)
# 成员运算 下方的例子可以看成if判断
print(32 in t1) #True
print(45 in t1) #True
print(78 in t1) #False
# 拼接运算 元组t1+元组t2 成为一个新元组t3
t3=t1+t2
print(t3)
# 比较运算
print(t1 == t3)            # False
print(t1 >= t3)            # False
print(t1 <= (35, 11, 99))  # False
# 学习打包和解包操作
# 打包操作
a = 1, 10, 100
print(type(a))  # <class 'tuple'>
print(a)        # (1, 10, 100)
# 解包操作
i, j, k = a
print(i, j, k)  # 1 10 100# 学习集合
tupic=(1,2,3,4) # 这是一个元组
print(tupic)
list={1,2,3,4,5,6,7,8,9,10} # 这是一个集合
print(list)
print(set('hello'))
#学习字典
dict1={'a':1,'b':2,'c':3,'d':4}
print(dict1)

字符串占位符

image-20250219130251690

函数的使用进阶,以及函数的高级应用

import functools
import operator
import string
import random
import time# 所有数字和所有字母的字符集
chars=string.digits+string.ascii_lettersdef generate_code(*,code_len=4):return ''.join(random.choices(chars,k=code_len))
# 学习 定义入参类型 num:int,和定义返回参数类型 ->bool
def is_prime(num:int)->bool:"""判断一个正整数是不是质数:param num: 大于1的正整数:return: 如果num是质数返回True,否则返回False"""for i in range(2,int(num**0.5)+1):if num%i==0:return Falsereturn Truefor _ in range(5):print(generate_code())def calc(*args,**kwargs):items=list(args)+list(kwargs.values())result=0for item in items:if(type(item) in (int,float)):result+=itemreturn resultdef calc(int_value,of_func,*args,**kwargs):items=list(args)+list(kwargs.values())result=int_valuefor item in items:if(type(item) in(int,float)):result=of_func(result,item)return resultdef add(x,y):return x + y
def mul(x,y):return x*y
# 学习将函数传递给函数
# 通过参数名的方式
print(calc(0,add,1,2,3,4,5))
print(calc(1,mul,1,2,3,4,5))def is_even(num):return num%2==0
def square(num):return num**2
old_nums=[35,46,73,52,90]
nums_news=[num **2 for num in old_nums if num%2==0]
print(nums_news)#lambda函数
old_nums = [35, 12, 8, 99, 60, 52]
new_nums=list(map(lambda x:x**2,filter(lambda y:y%2==0,old_nums)))
print(new_nums)#用一段代码实现计算阶乘的函数
fac=lambda n:functools.reduce(operator.mul,range(2,n+1),1)#用一段代码实现判断素数的函数
is_prime =lambda x:all(map(lambda f:x%f,range(2,int(x**0.5)+1)))#调用lambda 函数
print(fac(6))
print(is_prime(37))# 装饰器函数
def recode_time(func):@functools.wraps(func)def wrapper(*args,**kwargs):start=time.time()result=func(*args,**kwargs)end =time.time()print(f'{func.__name__}执行时间:{end-start:.2f}秒')return resultreturn wrapper#学习装饰器函数
@recode_time
def down(filename):print(f'正在下载{filename}')time.sleep(random.random()*6)print(f'{filename}下载完成')@recode_time
def upload(filename):print(f'正在上传{filename}')time.sleep(random.random()*8)print(f'{filename}上传完成')down('Mysql从删库到跑路')
upload('Python从入门到住院')

递归调用

# 递归调用
# 使用 Python 标准库中functools模块的lru_cache函数来优化上面的递归代码
@functools.lru_cache
def fac(num):if num in (0,1):return 1return num*fac(num-1)
print(fac(5))

面相对象编程应用小例子

Employee.py

from abc import ABCMeta, abstractmethodclass Employee(metaclass=ABCMeta):def __init__(self,name):self.name=name@abstractmethoddef get_salary(self):passclass Manager(Employee):def get_salary(self):return 15000.00
class Programmer(Employee):def get_salary(self,name,working_hour=0):super().__init__(name)self.working_hour=working_hourdef get_salary(self):return 200*self.working_hour
class Salesman(Employee):def __init__(self,name,sales=0):super().__init__(name)self.sales=salesdef get_salary(self):return 1800*self.sales*0.05emps=[Manager('刘备'),Programmer('诸葛亮'),Manager('曹操'),Programmer('荀彧'),Salesman('张辽')]
for emp in emps:if isinstance(emp,Programmer):emp.working_hour=int(input(f'请输入{emp.name}本月工作时间'))elif isinstance(emp,Salesman):emp.sales=float(input(f'请输入{emp.name}本月销售额'))print(f'{emp.name}本月工资为:¥{emp.get_salary():.2f}元')

Card.py

import random
from enum import Enumclass Suite(Enum):SPADE,HEART,CLUB,DIAMOND=range(4)for suite in Suite:print(f'{suite}:{suite.value}')
class Card:def __init__(self,suite,face):self.suite=suiteself.face=facedef __repr__(self):suites='♠♥♣♦'faces=['', 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']return f'{suites[self.suite.value]}{faces[self.face]}'#返回牌的花色和点数def __lt__(self, other):if self.suite == other.suite:return self.face < other.facereturn self.suite.value<other.suite.value
card1=Card(Suite.SPADE,5)
card2=Card(Suite.HEART,13)
print(card1)
print(card2)class Poker:def __init__(self):self.cards=[Card(suite,face)for suite in Suitefor face in range(1,14)]self.current=0def shuffle(self):self.current=0random.shuffle(self.cards)def deal(self):card=self.cards[self.current]self.current+=1return card@propertydef has_next(self):return self.current < len(self.cards)poker=Poker()
print(poker.cards)
poker.shuffle()
print(poker.cards)class Player:def __init__(self,name):self.name=nameself.cards=[]def get_one(self,card):self.cards.append(card)def arrange(self):self.cards.sort()
poker=Poker()
poker.shuffle()
players=[Player('东邪'),Player('西毒'),Player('南帝'),Player('北丐')]
for _ in range(13):for player in players:player.get_one(poker.deal())
for player in players:player.arrange()print(f'{player.name}:',end='')print(player.cards)

相关文章:

java经验快速学习python!

title: java经验快速学习python&#xff01; date: 2025-02-19 01:52:05 tags: python学习路线 java经验快速学习python&#xff01; 本篇文档会一直更新&#xff01;&#xff01;&#xff01;变量、分支结构、循环结构、数据结构【列表、元组、集合字典】python常用内置函数元…...

爬虫破解网页禁止F12

右击页面显示如下 先点击f12再输入网址&#xff0c;回车后没有加载任何数据 目前的一种解决方法&#xff1a; 先 AltD &#xff0c;再 CtrlShifti...

从零开始构建一个语言模型中vocab_size(词汇表大小)的设定规则

从零开始构建一个语言模型就要设计一个模型框架,其中要配置很多参数。在自然语言处理任务中,vocab_size(词汇表大小) 的设定是模型设计的关键参数之一,它直接影响模型的输入输出结构、计算效率和内存消耗。 本文是在我前文的基础上讲解的:从零开始构建一个小型字符级语言…...

Jenkins插件管理切换国内源地址

安装Jenkins 插件时&#xff0c;由于访问不了国外的插件地址&#xff0c;会导致基本插件都安装失败。 不用着急&#xff0c;等全部安装失败后&#xff0c;进入系统&#xff0c;修改插件源地址&#xff0c;重启后在安装所需插件。 替换国内插件更新地址 选择&#xff1a;系统…...

Q - learning 算法是什么

Q - learning 算法是什么 Q - learning 算法是一种经典的无模型强化学习算法,由克里斯沃特金斯(Chris Watkins)在 1989 年提出。它被广泛应用于解决各种决策问题,尤其适用于智能体在环境中通过与环境交互来学习最优策略的场景。下面从基本概念、核心公式、算法流程和特点几…...

nasm - console 32bits

文章目录 nasm - console 32bits概述笔记my_build.batnasm_main.asm用VS2019写个程序&#xff0c;按照win32方式编译&#xff0c;比较一下。备注END nasm - console 32bits 概述 看到一个nasm的例子(用nasm实现一个32bits控制台的程序架子) 学习一下 笔记 my_build.bat ec…...

11.编写前端内容|vscode链接Linux|html|css|js(C++)

vscode链接服务器 安装VScode插件 Chinese (Simplified) (简体中⽂) Language Pack for Visual Studio CodeOpen in BrowserRemote SSH 在命令行输入 remote-ssh接着输入 打开配置文件&#xff0c;已经配置好主机 点击远程资源管理器可以找到 右键链接 输入密码 …...

【deepseek-r1模型】linux部署deepseek

1、快速安装 Ollama 下载&#xff1a;Download Ollama on macOS Ollama 官方主页&#xff1a;https://ollama.com Ollama 官方 GitHub 源代码仓库&#xff1a;https://github.com/ollama/ollama/ 官网提供了一条命令行快速安装的方法。 &#xff08;1&#xff09;下载Olla…...

【Github每日推荐】-- 2024 年项目汇总

1、AI 技术 项目简述OmniParser一款基于纯视觉的 GUI 智能体&#xff0c;能够准确识别界面上可交互图标以及理解截图中各元素语义&#xff0c;实现自动化界面交互场景&#xff0c;如自动化测试、自动化操作等。ChatTTS一款专门为对话场景设计的语音生成模型&#xff0c;主要用…...

C++中的.*运算符

看运算符重载的时候&#xff0c;看到这一句 .* :: sizeof ?: . 注意以上5个运算符不能重载。 :: sizeof ?: . 这四个好理解&#xff0c;毕竟都学过&#xff0c;但.*是什么&#xff1f; 于是自己整理了一下 .* 是一种 C 中的运算符&#xff0c;称为指针到成…...

深度学习笔记——LSTM

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的LSTM知识点。 文章目录 LSTM&#xff08;Long Short-Term Memory&#xff09;LSTM 的核心部件LSTM 的公式和工作原理(1) 遗忘门&a…...

spring boot知识点2

1.spring boot 要开启一些特性&#xff0c;可通过什么方式开启 a.通过Enable注解&#xff0c;可启动定时服务 b.通过application.properties可设置端口号等地址信息 2.什么是热部署&#xff0c;以及spring boot通过什么方式进行热部署 热部署这个概念&#xff0c;我知道。就…...

【机器学习】CNN与Transformer的表面区别与本质区别

仅供参考 表面区别 1. 结构和原理: CNN:主要通过卷积层来提取特征,这些层通过滑动窗口(卷积核)捕捉局部特征,并通过池化层(如最大池化)来降低特征的空间维度。CNN非常适合处理具有网格状拓扑结构的数据,如图像。Transformer:基于自注意力(Self-Attention)机制,能…...

框架篇 - Hearth ArcGIS 框架扩展(DryIoC、Options、Nlog...)

框架篇 - Hearth ArcGISPro Addin 框架扩展(DryIoC、Options、Nlog…) 文章目录 框架篇 - Hearth ArcGISPro Addin 框架扩展(DryIoC、Options、Nlog...)1 使用IoC、DI1.1 服务注册1.1.1 `ServiceAttribute`服务特性1.2 依赖注入1.2.1 SDK底层创建实例类型依赖注入1.2.2 `In…...

JUC并发—7.AQS源码分析三

大纲 1.等待多线程完成的CountDownLatch介绍 2.CountDownLatch.await()方法源码 3.CountDownLatch.coutDown()方法源码 4.CountDownLatch总结 5.控制并发线程数的Semaphore介绍 6.Semaphore的令牌获取过程 7.Semaphore的令牌释放过程 8.同步屏障CyclicBarrier介绍 9.C…...

windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI

本文将手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大语言模型&#xff0c;实现私有化AI服务搭建。 一、环境准备 1.1 硬件要求 CPU&#xff1a;推荐Intel i7及以上&#xff08;需支持AVX2指令集&#xff09; 内存&#xff1a;最低16GB&#xff0c;推荐…...

当C#邂逅Deepseek, 或.net界面集成deepseek

最近&#xff0c;我开发了一个C#界面&#xff0c;并集成了Deepseek的接口功能&#xff0c;实现了本地化部署和流模式读取。 过程充满了挑战和乐趣&#xff0c;也让我深刻体会到Deepseek的强大之处。今天&#xff0c;我想和大家分享这段经历&#xff0c;希望能激发你对Deepseek的…...

Cursor实战:Web版背单词应用开发演示

Cursor实战&#xff1a;Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…...

Kotlin Lambda

Kotlin Lambda 在探索Kotlin Lambda之前&#xff0c;我们先回顾下Java中的Lambda表达式&#xff0c;Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能&#xff0c;它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…...

V4L2驱动之UVC

以下是关于V4L2摄像头驱动框架与UVC协议的关联分析&#xff0c;从内核驱动到用户空间的完整视角&#xff1a; 1. V4L2驱动框架核心架构 关键组件&#xff1a; 核心层 (V4L2 Core) v4l2_device&#xff1a;设备的总入口&#xff0c;管理所有子组件video_device&#xff1a;对应…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

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

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

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...