Python 学习1 基础
文章目录
- 基础
- 字符串
- 字面量
- 常用的值类型
- 注释
- 变量
- print语句
- 数据类型
- 数据类型转换
- 标识符
- 运算符
- 字符串拓展
- 小结
2023.10.28 周六
最近打算学一下Python,毕竟确实简单方便,而且那个编程语言排名还是在第一。不过不打算靠它吃饭,深不深入暂且不说,准备先把语法学一下,尝试用py去刷算法。
讲道理语法之前学过py基础,不过感觉又忘光了,这里再跟着b站黑马的视频学学,先记一下。
贴一下链接 B站 - 黑马程序员2022python教程
基础
字符串
是指由任意数量的字符组成,需要用双引号包围起来
字面量
字面量是被写在代码中的固定的值。
字面量可以是整数字面量、固定的浮点数或固定的字符串字面量
如何将字面量输出到屏幕上,需要使用 print 语句
常用的值类型

注释
单行注释以 # 作为开头,建议有空格隔开
# 这是一个单行注释
多行注释以三个双引号"""引起来的内容作为注释的内容,支持换行
"""
这里是
一个
多行注释
"""
变量
变量是存储计算结果或表示值的抽象概念
变量定义格式为 变量名 = 变量值
age = 50
从这来看,我本以为,py没有明确的类型要求,那么应该是弱类型语言。但实际完全不对,强弱语言和动静语言的区别和这没关系,具体见 Python到底是强类型语言,还是弱类型语言? ,我觉得说的比我有道理,那么暂依此来看,简单来说强弱类型实际是取决于 “程序对于 untrapped errors 的检查强度”,由此看python是动态语言没错但也是强类型语言。
print语句
import sys # import貌似是必须放在文件最上面,否则会报错print(50)
print("hello")
# 打印多个值:50、hello、50.5、True、None(None也可以打印出来,True也可以,但是作为字符串值),
# 用|分隔(默认是空格),结尾用两个换行(默认是一个换行)
print(50, "hello", 50.5, True, None, sep="|", end="\n\n")
# sep也可以是None,表示不分隔,end也可以是None,表示不换行;
# file是输出到哪里,默认是sys.stdout,也就是控制台
# flush是是否刷新缓冲区,默认是False。True表示立即输出,False表示缓冲区满了再输出
print(-1.11, "你好", sep=None, end="\t\n", file=sys.stdout, flush=False)
# 输出到文件,如果文件不存在会自动创建,如果文件存在会覆盖
print("hello world", file=open("hello.txt", "w"))
# 输出到文件,如果文件不存在会自动创建,如果文件存在会在文件末尾追加
print("hello world", file=open("hello.txt", "a"))
# 输出到文件,如果文件不存在会自动创建,如果文件存在会报错
# print("hello world",file=open("hello.txt","x"))
# 输出到内存流
import iof = io.StringIO() # 创建内存流
print("hello world", 123, file=f) # 这里不会输出到控制台,而是输出到内存流,也就是f
print(f.getvalue()) # 获取内存流的值并打印
f.close()
# 输出到标准错误流,也就是控制台,会打印为红色的报错信息
print("hello world error", file=sys.stderr)
print("经过实验,打印的错误信息并不是真的错误,下面的语句还是可以执行的:", 3.5 * 2.4)
price = 3.5
print("简单的运算也可以打印啊",price * 2.4,sep=" —— ")
打印结果如下,虽然不知道为什么error那条信息会出现在最开始。。但是调试的话,它又会出现在最下面。。大概打印到流又从流获取不是同步操作?
hello world error
50
hello
50|hello|50.5|True|None-1.11 你好
hello world 123经过实验,打印的错误信息并不是真的错误,下面的语句还是可以执行的: 8.4
简单的运算也可以打印啊 —— 8.4
数据类型
Python中变量没有类型,只有存储的数据有类型
字符串、整数和浮点数是Python中常见的三类数据类型,它们的类型名称分别为string、int和float
type语句查看变量中存储的数据类型,有返回值
print(type(-9)) # <class 'int'>
print(type(9 * 9)) # <class 'int'>
print(type(-920.554)) # <class 'float'>
print(type(-9 * 9.1 / 2.5)) # <class 'float'>
print(type(True)) # <class 'bool'>str_type = type("nihao")
print(type(str_type)) # <class 'type'>print(print(type("nihao"))) # <class 'str'>(换行)Noneprint(print()) #(换行)Noneprint(type(print(666))) # 666(换行)<class 'NoneType'>
数据类型转换
在Python中,使用int、float、str语句进行类型转换,注意结果输出。
任何类型都可转成字符串。
字符串要转换成数字必须只有数字,否则报错。
浮点数转整数会丢失精度,小数部分没了。
# 万物皆可转成字符串
print(type(str(11)), str(11)) # <class 'str'> 11
print(type(str(11.11)), str(11.11)) # <class 'str'> 11.11
print(type(str(True)), str(True)) # <class 'str'> True
print(type(str([1, 2, 3])), str([1, 2, 3])) # <class 'str'> [1, 2, 3]
print(type(str((1, 2, 3))), str((1, 2, 3))) # <class 'str'> (1, 2, 3)
print(type(str({1, 2, 3})), str({1, 2, 3})) # <class 'str'> {1, 2, 3}
print(type(str({'a': 1, 'b': 2, 'c': 3})), str({'a': 1, 'b': 2, 'c': 3})) # <class 'str'> {'a': 1, 'b': 2, 'c': 3}
print(type(str(None)), str(None)) # <class 'str'> None
print(type(str(str)), str(str)) # <class 'str'> <class 'str'>
print(type(str(int)), str(int)) # <class 'str'> <class 'int'> 因为int是关键字,用str(int)直接把类型的字符串打印出来了print("=====================================")print(type(int('11')), int('11')) # <class 'int'> 11
print(type(int(11.11)), int(11.11)) # <class 'int'> 11 精度丢失
print(type(int(11.55)), int(11.55)) # <class 'int'> 11,这么看来,int()是直接截取小数点前面的数字而不是四舍五入
# print(type(int('11.11')), int('11.11')) # 报错,因为int()不能直接转换浮点数字符串
print(type(int(True)), int(True)) # <class 'int'> 1
# print(type(int([1, 2, 3])), int([1, 2, 3])) # 报错,因为int()不能直接转换listprint("=====================================")print(type(float('11.22')), float('11.22')) # <class 'float'> 11.22,int()不能直接转换浮点数字符串,但是float()可以
print(type(float(11)), float(11)) # <class 'float'> 11.0
print(type(float(11.11)), float(11.11)) # <class 'float'> 11.11
print(type(float(True)), float(True)) # <class 'float'> 1.0
# print(type(float([1, 2, 3])), float([1, 2, 3])) # 报错,因为float()不能直接转换list
标识符
编程时给类、方法、变量等等取的名字称为 标识符。
Python中的 标识符命名规则 ,包括内容限定、大小写敏感和不可使用关键字等三类规则。
其中,标识符只允许出现 英文、中文、数字和下划线 ,不能以数字开头,关键字也不能使用。同时,标识符的命名要做到简明易懂,避免使用中文和特殊符号。
关键字:

运算符

字符串拓展
- 定义方式
单引号,双引号,三个双引号(写法同多行注释,但是赋给一个接收的变量就是字符串) - 引号嵌套

- 字符串拼接
+ - 字符串格式化
name = "张三" # print("hello," + name + "很高兴认识你,我的电话是:" + 123456) # TypeError: can only concatenate str (not "int") to str # 不用 + ,用逗号 print("hello," + name + ",很高兴认识你,我的电话是:", 123456, sep="") # hello,张三,很高兴认识你,我的电话是:123456 # 转换成字符串 print("hello," + name + ",很高兴认识你,我的电话是:" + str(123456), sep="") # hello,张三,很高兴认识你,我的电话是:123456 # 占位符 %s 字符串 %d 整数 %f 浮点数 print("hello, %s,很高兴认识你,我的电话是:%d" % (name, 123456)) # hello, 张三, 我的电话是:123456 # 快速占位符f"{}",不能做精度控制,适合快速显示 phone = 123456 print(f"hello, {name},很高兴认识你,我的电话是:{phone}") # hello, 张三, 我的电话是:123456 # {}中也可以放简单表达式 print(f"hello, {type('字符串')},很高兴认识你,我的电话是:{4 ** 4}") # hello, <class 'str'>,很高兴认识你,我的电话是:256 - 精度控制

num1 = 11 num2 = 11.49 print("11保留1位:{:.1f}".format(num1)) # 11.0 print("11.49保留1位:%.1f" % num2) # 11.5 四舍五入 print("11保留3位:{:.3f}".format(num1)) # 11.000 补0 print("11.49保留3位:%.3f" % num2) # 11.490 print("11宽度为5:{:5d}".format(num1)) # 11 右对齐,不足左边补3个空格 print("11.49宽度为5,保留0位小数,%5.0f" % num2) # 11(右对齐)(四舍五入) print("11.49宽度为12:%12f" % num2) # 11.490000(右对齐,算上小数点是9位,不足12位左边补3个空格)(四舍五入) print("11宽度为9,保留1位:{:9.1f}".format(num1)) # 11.0(右对齐) print("11.49宽度为9,保留1位:%9.1f" % num2) # 11.5(右对齐) - 表达式:即具有明确执行结果的代码语句
- 数据输入
input语句# 如果三次输入的name一样,那么这三个代码输出是一样的 print("你是谁?", end="") name = input() print("我知道了,你是%s" % name)name = input("你是谁?") print(f"我知道了,你是{name}")print("我知道了,你是", input("你是谁?"), sep="")
小结
今天到此为止。
内容上,目前看了第一阶段第一章,都是基础,32小时大概看了1/6的样子。
难度上不得不说,一点都不难,当然我有基础,但是没基础也一样,比java好学太多了。
感想是看的真慢,别看看了六分之一,倍速看的也很久。其实最费时间的不是看视频,是跟着写验证、虽然不验证我也知道什么情况,总归写了记得清楚点。还有费时间的其实是这篇博客,真的是,哇,看一点记一点,标签页切来切去,csdn的MD编辑器……emm,我才发现可以隐藏预览区,那没事了……
相关文章:
Python 学习1 基础
文章目录 基础字符串字面量常用的值类型注释变量print语句数据类型数据类型转换标识符运算符 字符串拓展小结 2023.10.28 周六 最近打算学一下Python,毕竟确实简单方便,而且那个编程语言排名还是在第一。不过不打算靠它吃饭,深不深入暂且不说…...
网络协议--TCP的超时与重传
21.1 引言 TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。对任何实现而言,关键之处就在于超时和重…...
Thread
Thread 线程启动线程第一种创建线程线程的第二种创建方式使用匿名内部类完成线程的两种创建 Thread API线程的优先级线程提供的静态方法守护线程用户线程和守护线程的区别体现在进程结束时 多线并发安全问题同步块 线程 启动线程 启动线程:调用线程的start方法,而不是直接调用…...
FOC系列(二)----继续学习DRV8301芯片
一、 程序框图 跟随上篇博客咱们继续往下看,下面是芯片内部的程序框图: 1.1 BUCK电路 1.2 内部各电源 1.3 SPI通信、栅极驱动器和时序控制器 1.4 MOSFET驱动电路 1.5 电流采样放大电路 数据手册只是给出了这一部分框图,但是没有更加详细的介…...
A. Directional Increase -前缀和与差分理解 + 思维
题面 分析 观察指针移动的性质,可以发现每一段都是从起点走到终点,在原路返回,这样每一段也就表示,在起点处加一,在终点处减一,形成了很明显的差分结构,思考能否构造出a数组的关键就是他的前缀…...
openpnp - java调试环境 - 最好只保留一套jdk环境
文章目录 openpnp - java调试环境 - 最好只保留一套jdk环境概述END openpnp - java调试环境 - 最好只保留一套jdk环境 概述 没注意做了啥操作, 前天好好的, 昨天下午开始, 编译好的openpnp程序就无法正常打开了. 故障表现: 程序运行后, 最多只能看到欢迎对话框(显示版本和发…...
AI技术的钓鱼邮件有多强
如今,人工智能技术的迅猛发展给各个领域都带来了前所未有的变革和进步。2023年上半年ChatGPT的火爆出圈,让人们看到了AI惊艳表现的光彩一面,但同时黑暗的一面也正在暗自发力,野蛮生长。 AI技术不仅可用于维护网络安全,…...
vue/react项目刷新页面出现404报错的原因及解决办法
Vue项目打包部署到线上后,刷新页面会提示404,下面这篇文章主要给大家介绍了关于vue/react项目刷新页面出现404报错的原因及解决办法,文中将解决的办法介绍的很详细,需要的朋友可以参考下 背景解决办法 法1:将vue/react路由模式由history路由改为has…...
黑客技术(网络安全)——如何高效学习
前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…...
53.MongoDB分片集群高级集群架构详解
MongoDB分片集群架构详解 为什么要使用分片 分片(shard)是指在将数据进行水平切分之后,将其存储到多个不同的服务器节点上的一种扩展方式。 一个复制集能承载的容量和负载是有限的,遇到以下场景就需要考虑使用分片 存储容量需…...
Servlet 上下文参数
7)Servlet上下文对象:ServletContext生活中的例子:张三和李四在不远处窃窃私语,并且频繁的对着你坏笑。你肯定会跑过去问:你们俩在聊什么?注意:此处的聊什么,其实就是你在咨询他们聊天的上下文&…...
ChatGPT正在测试原生文件分析功能,DALL·E 3能P图啦!
10月29日,有部分用户在社交平台上分享,ChatGPT Plus正在测试原生文件上传、分析功能,可以通过文本问答的方式,对上传的PDF等数据文件进行提问、搜索。 例如,上传一份50页的员工手册PDF文件,然后向ChatGPT提…...
三相马达的电机故障维护
目录 电机故障维护编辑 更换电机操作 三相电路 热继电器 今天继续小编的工作经验的分享,今天就说说遇到的问题吧,今天组立熔接机出现故障,后面部分出现了“咕噜噜”的杂声,走到后面一听是电机发出的声音。没有办法了就开始拆…...
【易售小程序项目】后端部署、Uniapp项目Web部署
文章目录 Uniapp项目Web打包部署为什么不部署小程序Web打包前对项目进行调整网站、小程序切换增加constant.js来控制常量将js绑定到main.js的全局变量中 WebSocket差异监听键盘呼出导航条打包部署 后端项目打包部署打包前准备打包部署 Uniapp项目Web打包部署 为什么不部署小程…...
prometheus监控kafka
一、前言 关于对kafka的监控,要求高的话可以使用kafka-exorter和jmx-exporter一起收集监控数据,要求不高的情况下可以使用kafka-exporter收集监控数据即可 二、部署 kafka-exporter 部署kafka-exporter,我是在k8s集群中部署的 编辑yaml文件…...
【STL】:list用法详解
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关list的使用,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构…...
SQL Wildcards 通配符
SQL Wildcards 通配符 通配符用于替换字符串中的任何其他字符。 通配符与 SQL LIKE 运算符一起使用。在 WHERE 子句中使用LIKE运算符来搜索列中的指定模式。 有两个通配符与 LIKE 运算符一起使用: % - 百分号表示零个,一个或多个字符_ - 下…...
入门必学 | R语言for循环的常规应用
文章目录 何为判断语句在for循环中添加判断语句嵌套循环 在上一节中,我们介绍了迭代与for循环,并对for循环的结构与原理进行了深入的介绍。在这一节中,我们将分享for循环的常规应用,包括在其中加入判断语句与嵌套循环。 何为判断语…...
metaRTC集成flutter ui demo编译指南
概要 Flutter是由Google开发的开源UI工具包,用于构建跨平台应用程序,支持linux/windows/mac/android/ios等操作系统。 metaRTC新增flutter demo,支持linux/windows/mac/android/ios操作系统,此demo在ubuntu桌面环境下测试成功。…...
int怎么转成QString?
2023年10月31日,周二晚上 要将 int 类型转换为 QString,可以使用 QString::number() 方法。 下面是一个示例代码: int number 123; QString str QString::number(number);还可以在转换时指定进制,比如将整数转换为十六进制的字…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
