韩顺平老师Python学习笔记【持续更新...】

news2024/11/16 1:43:19

1、Python语言概述

1.1、转义字符

1.1.1、常用的转义字符

常用转义字符列表
\t一个制表位,实现对齐的功能
\n换行符
\\一个\
\'一个'
\"一个"
\r一个回车

1.2、注释

1.2.1、单行注释

# + 其他

1.2.2、多行注释

三个单引号 ''' + xxx + '''   或   三个双引号 """ + xxx + """

1.2.3、文件编码声明注释

# coding:编码
# coding:utf-8

## 用途:用于指定文件的编码格式(放在文件开头)

2、变量

2.1、变量基本原理

变量三要素 = 类型 + 名称 + 值

2.2、格式化输出

2.2.1、%操作

age = 80
score = 70.5
gender = 'male'
name = 'John'

print("info: %s %d %s %.1f" % (name, age, gender, score))

2.2.2、format()函数

print("info: {} {} {} {} ".format(name, age, gender, score))

2.2.3、f-strings

print(f"info: {name} {age} {score} {gender}")

2.3、加法运算

  • 左右两边都是数值型时,则做加法运算。
  • 左右两边都是字符串时,则做拼接运算。

2.4、数据类型

2.4.1、通过使用 type() 来查看数据的数据类型

type(object)

2.4.2、整数类型

2.4.2.1、进制

2.4.2.2、Python中的整型占多少个字节

字节(byte):计算机中基本存储单位。

位(bit):计算机中的最小存储单位。

1byte = 8 bit

  • 字节数随着数字的增大而增大(Python整型是变长的)。
  • 每次的增量是4个字节。

2.5、浮点类型

  • 其实也就是小数。
  • 科学计数法表示:
    # 5.12乘以10的2次方
    5.12e2
    # 5.12除以10的2次方
    5.12E-2
    
  • 浮点类型计算后,存在精度的损失,可以使用 Decimal 类进行精确计算。
    b = 8.1 / 3 # 2.7
    
    # 解决方法
    from decimal import Decimal
    b = Decimal("8.1") / Decimal("3")
    

2.6、布尔类型

2.6.1、知识点

  • 布尔类型也叫bool类型,取值为 True 和 False。
  • bool类型适用于逻辑运算,一般用于流程控制。
  • bool在运算中,True为1,False为0。
  • 在Python中,非0值被视为真值,0值被视为假值。

2.7、字符串类型

2.7.1、知识点

  • 使用引号(单双引号都可以)包括起来,创建字符串。
  • 在字符串前面加 'r' 可以使整个字符串不会被转义。

2.7.2、字符串的驻留机制

  • 相同值的变量指向同一个内存地址。

2.8、数据类型转换

2.8.1、隐式类型转换

  • 在运算的时候,数据类型会向高精度自动转换。

2.8.2、显式类型转换

  • 借助一些函数来做转换。


3、运算符

3.1、运算符介绍

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符
  • 位运算符

3.2、算术运算符

3.2.1、知识点

3.3、比较运算符

3.3.1、知识点

  • 比较运算符的结果要么是 True,要么是 False。

3.4、逻辑运算符

3.4.1、知识点

假设:a=10,b=20

3.5、赋值运算符

3.5.1、知识点

  • 赋值运算符就是将某个运算后的值,赋给指定的变量。

3.6、三元运算符

3.6.1、知识点

  • 语法是:max = a if a > b else b

3.7、运算符的优先级

3.8、标识符的命名规则和命名规范

  • 凡是可以自己起名字的地方都叫标识符。

3.9、关键字

  • 被Python语言赋予了特殊含义,用作专门用途的字符串(单词)。这些关键字不要用做标识符了。

3.10、键盘输入

  • 需要接收用户输入的数据,可以使用键盘输入语句来获取。
  • 一般使用:input()函数。
  • 从控制台接收到的数据类型是 字符串类型。

4、进制(先跳过,后续补充!)


5、程序控制结构

三大流程控制语句:

  • 顺序控制。
  • 分支控制。
  • 循环控制。

5.1、顺序控制

5.1.1、知识点

  • 程序从上到下逐行地执行,中间没有任何判断和跳转。

5.2、分支控制if-else

5.2.1、单分支

if 条件表达式:
    代码块(可以有多条语句)

5.2.2、双分支

if 条件表达式:
    执行代码块1
else:
    执行代码块2

5.2.3、多分支

if 条件表达式:
    执行代码块1
elif:
    执行代码块2
......
else:
    执行代码块n+1

5.3、嵌套分支

  • 在一个分支结构中又嵌套了另一个分支结构。

5.4、for循环控制

5.4.1、知识点

for <变量> in <范围/序列>:
    <循环操作语句>

5.5、while循环控制

while 判断条件:
    循环操作语句

5.6、多重循环

思路如下:

  • 1、矩形:
    # i控制层数
    for i in range(1, 6):
        # j控制每层输出的*的个数
        for j in range(1, 6):
            # 这里的end=''表示输出不换行
            print("*", end='')
        # 表示每层输出后换行
        print('')
  • 直角三角形:
    # i控制层数
    for i in range(1, 6):
        # j控制每层输出的*的个数
        for j in range(i):
            # 这里的end=''表示输出不换行
            print("*", end='')
        # 表示每层输出后换行
        print('')
  • 金字塔:
    # i控制层数
    for i in range(1, 6):
        for k in range(5-i):
            print(' ', end='')
        # j控制每层输出的*的个数
        for j in range(2*i-1):
            # 这里的end=''表示输出不换行
            print("*", end='')
        # 表示每层输出后换行
        print('')
  • 空心金字塔:
    # i控制层数
    for i in range(1, 6):
        for k in range(5-i):
            print(' ', end='')
        # j控制每层输出的*的个数
        for j in range(2*i-1):
            # 这里的end=''表示输出不换行
            if j == 0 or j == 2*i-1-1 or i==5:
                print("*", end='')
            else:
                print(' ', end='')
        # 表示每层输出后换行
        print('')

最终代码如下:

total_level = int(input())

# i控制层数
for i in range(1, total_level+1):
    for k in range(total_level-i):
        print(' ', end='')
    # j控制每层输出的*的个数
    for j in range(2*i-1):
        # 这里的end=''表示输出不换行
        if j == 0 or j == 2*i-1-1 or i==total_level:
            print("*", end='')
        else:
            print(' ', end='')
    # 表示每层输出后换行
    print('')

5.7、break语句

  • 终止循环用的语句。

5.8、continue语句

  • continue语句用于for或while循环所嵌套的代码中。
  • continue语句用于结束本次循环,继续执行循环的下一个轮次。

5.9、return语句

  • return使用在函数,表示跳出所在的函数。
  • 注意,break语句只是结束当前循环,而return语句直接跳出了这个函数。

6、函数

6.1、知识点

  • 普通传参:
    def xxx(args):
        xxx
  • 传入多个的位置参数:
    def xxx(*args):
        xxx

  • 传入关键字可变参数:
    def xxx(**args):
        xxx

6.2、函数的传参机制

6.3、函数的递归调用

  • 简单来讲,递归就是函数自己调用自己,每次调用时传入不同的值。
  • 递归有助于编程者解决复杂问题,同时可以让代码变得简洁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESLint详解及在WebStorm中的应用

ESLint是一个开源的JavaScript代码检查工具&#xff0c;用于识别和报告JavaScript代码中的模式问题。它可以帮助开发者遵循一定的编码规范和最佳实践&#xff0c;提高代码质量和可维护性。 ESLint的工作原理是通过插件和配置文件来定义一系列规则&#xff0c;对JavaScript代码…

Jakarta Servlet 到 SpringMVC

Jakarta EE&#xff08;曾被称为Java EE&#xff09;是Java平台企业版&#xff08;Java Platform Enterprise Edition&#xff09;的下一代版本&#xff0c;它在Oracle将Java EE的开发和维护交给Eclipse Foundation后得以重生&#xff0c;并更名为Jakarta EE。Jakarta EE保留了…

Redis面试问题(牛客整理版)未完成

文章目录 参考资料出处 缓存过期时间缓存过期删除定期删除 从库处理过期 key持久化过期时间如何确定 缓存淘汰策略LRULFU 缓存模式Cache Aside删除缓存延迟双删 缓存一致性问题解决缓存穿透、击穿和雪崩问题缓存穿透回写特殊值布隆过滤器 缓存击穿Singleflight 缓存雪崩过期时间…

k3s中通过kuboard搭建rabbitmq

如果仅仅是单个rabbitmq容器在单台服务上运行&#xff0c;并不是搭建rabbitmq集群&#xff0c;则不需要使用到service。仅仅通过容器暴露端口到宿主机的形式。 1、拉取 RabbitMQ 镜像 我这边选择的版本是 rabbitmq:3.12-management在终端中执行以下命令以拉取 rabbitmq:3.12-m…

两道关于xssDOM型的案例

第一道 代码分析&#xff1a;data是要插入到html页面的标签及属性&#xff0c;下面的for循环的作用则是将你插入的标签里的属性给全部删除。 图中&#xff0c;把我img的src属性给删掉了。 但当我多写几个属性时&#xff0c;奇怪的事情发生了。 他只把我得src给删掉了&#xff…

SQL基础教程(八)SQL高级处理

※食用指南&#xff1a;文章内容为《SQL基础教程》系列学习笔记&#xff0c;该书对新手入门非常友好&#xff0c;循序渐进&#xff0c;浅显易懂&#xff0c;本人主要用来补全学习MySQL中未涉及的部分&#xff0c;便于刷题和做项目。 官方电子书&#xff1a;《SQL基础教程》第2…

掌握TCP连接管理与流量控制:从零开始

文章目录 1. TCP连接管理1.1 三次握手&#xff08;Three-way Handshake&#xff09;1.2 四次挥手&#xff08;Four-way Handshake&#xff09;1.3 TCP连接管理的重要性 2. TCP流量控制2.1 滑动窗口&#xff08;Sliding Window&#xff09;2.2 拥塞控制&#xff08;Congestion C…

【ARM+Codesys 客户案例 】基于RK3568/A40i/STM32+CODESYS开发的控制器在自动输送分拣系统上的应用,支持定制

2021年“京东618” 累计下单金额超3438亿元,再次刷新纪录! 从下单到收货&#xff0c;各种货品均可在短短几天内通过四通八达的物流网络送达全国任何一个家庭。电子商务和快递物流的迅猛发展对仓储、分拣、配送效率和准确性均提出了更高的要求&#xff0c;加速了智能物流的发展。…

Java Resilience4j-RateLimiter学习

一. 介绍 Resilience4j-RateLimiter 是 Resilience4j 中的一个限流模块&#xff0c;我们对 Resilience4j 的 CircuitBreaker、Retry 已经有了一定的了解&#xff0c;现在来学习 RateLimiter 限流器&#xff1b; 引入依赖&#xff1b; <dependency><groupId>io.g…

序列建模之循环和递归网络 - 递归神经网络篇

序言 在序列建模的广阔领域中&#xff0c;递归神经网络&#xff08; Recursive Neural Network, RNN \text{Recursive Neural Network, RNN} Recursive Neural Network, RNN&#xff09;&#xff0c;注意此处的 RNN \text{RNN} RNN与常用于序列处理的循环神经网络在命名上有所…

【生成式人工智能-十五-经典的影像生成方法-GAN】

经典的影像生成方法-GAN GANDiscriminatorGenerator还需要加入额外信息么 GAN可以加在其他模型上面我们可以用影像生成模型做什么&#xff1f; 前面讲过VAE和Flow-based以及diffusion Model &#xff0c;今天讲最后一种经典的生成方法GAN。 GAN 前面讲的几种模型都是用加入额外…

红黑树剖析(插入部分)

文章目录 红黑树插入节点情景分析情景1&#xff1a;红黑树为空树情景2&#xff1a;插入节点的Key已存在情景3&#xff1a;插入节点的父节点为黑色节点情景4&#xff1a;插入节点的父节点为红色情景4.1 叔叔节点存在并且为红色节点情景4.2 叔叔节点存在而且是黑色节点情景4.3 叔…

xss 一些例子

目录 XSS 1.Ma Spaghet!​编辑 2.Jefff​编辑 3.Ugandan Knuckles​编辑 4.Ricardo Milos​编辑 5.Ah Thats Hawt​编辑 6.Ligma​编辑 7.Mafia​编辑 简单解法就是换一个函数 作者得原意解法 8.Ok, Boomer​编辑 XSS 1.Ma Spaghet! 这里接收了一个somebody参数&…

Chain of Thought (CoT) 系列论文:大模型思维链,提升 LLM 的推理能力

文章目录 1. COT&#xff1a;Chain of Thought1. 研究背景2. CoT的原理3. CoT Prompt 1. COT&#xff1a;Chain of Thought COT 是 2022.01 由 google 提出的针对提升 LLM 的推理能力的 Prompt Engineering 方法。 paper&#xff1a; Chain-of-Thought Prompting Elicits Re…

一器多能,数据文件处理的瑞士军刀 — dasel

Dasel&#xff1a;简化数据操作&#xff0c;提升开发效率。- 精选真开源&#xff0c;释放新价值。 概览 dasel是一款专为开发者设计的高效数据文件操作工具&#xff0c;它允许用户通过统一的接口对JSON、TOML、YAML、XML和CSV等格式的文件进行数据选择、插入和删除操作。这款工…

Kafka基本概念及消费流程

Kafka是消息中间件的一种&#xff0c;相较于其他消息中间件&#xff0c;其以极高的吞吐量闻名&#xff0c;常用于构建实时数据管道和流应用&#xff0c;能够处理高吞吐量的数据流。以下是Kafka中的重要概念&#xff1a; 1. 生产者 生产者是向Kafka主题发送消息的客户端。生产…

登录 k8s-Dashboard 显示 Your connection is not private

文章目录 一、背景二、解决方案 一、背景 部署好 kubernetes-Dashboard 后使用 master节点的 ipport 登录 Dashboard 显示 Your connection is not private 无论是 Edge 还是 Google Chrome 都是这样的情况 二、解决方案 点击网页空白处&#xff0c;英文输入法输入&#xf…

论文解读:LONGWRITER: UNLEASHING 10,000+ WORD GENERATION FROM LONG CONTEXT LLMS

摘要 现象&#xff1a;当前的大预言模型可以接受超过100,000个tokens的输入&#xff0c;但是却难以生成超过2000个token的输出。 原因&#xff1a;监督微调过程(SFT)中看到的样本没有足够长的样本。 解决方法&#xff1a; Agent Write&#xff0c;可以将长任务分解为子任务&a…

为什么MCU I2C波形中会出现的脉冲毛刺?

在I2C的波形中&#xff0c;经常会发现有这样的脉冲毛刺&#xff0c;会被认为是干扰或者器件不正常。 看到这个波形时&#xff0c;可以先数一下出现在第几个clock的位置&#xff0c;如果出现在第9个clock的低电平期间&#xff0c;就不是干扰或者器件异常导致。 在I2C的协议中&a…

Java并发类的主要API方法-CountDownLatch和CyclicBarrier

1.概念介绍 CountDownLatch 是一个计数器&#xff0c;计数器的初始值由创建它时指定。每次调用 countDown() 方法时&#xff0c;计数器会减1&#xff0c;直到计数器值变为0时&#xff0c;所有调用 await() 的线程都会被唤醒继续执行。 CyclicBarrier 是 Java 中另一个常用的同…