零基础Python学习

news2024/12/26 6:37:49

1.环境搭建

1.1 安装运行环境python3.13

Welcome to Python.org

1.2 安装集成开发环境PyCharm 

PyCharm: the Python IDE for data science and web development

1.3 创建项目 && 设置字体

2.基础语法 

2.1 常量与表达式

  • 在python中整数除整数不会优化,所以结果可能是小数

2.2 变量 

在Python中定义一个变量,直接写变量名就行

  1. 变量必须由数字 字符 下划线,不能包含特殊符号
  2. 数字不能开头
  3. 变量名不能和Python中的关键字重复
  4. Python中变量名,是区分大小写的,大小写敏感

  • 第一个给值叫初始化,第二次给值叫赋值

Python中的变量类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化值的类型来确定

在Python中,int能够表示的数据范围是"无穷"的,因为int可以根据要表示的数据大小,自动扩容 

在Python中,True是真,False是假,第一个首字符要大小 

 

  • int类型,默认4字节,动态扩容
  • float,8字节,
  • bool,1字节’
  • str,变长

动态类型:程序运行过程中,变量的类型可能会发生改变~ 

  •  Python作为一个动态类型的语言,在定义变量是,也是可以声明类型的a:int,但没什么用

2.3 注释

 

2.4 输出-格式化字符串

print(   f“{变量}”   )

  • 注意:字符串不能跟数字拼接

 2.5 输入-input

  • 注意:input函数的返回值是str的,可以使用强制类型转换int(),float(),

2.6 运算符 

算术 关系 逻辑

  • 特殊的算术运算符:** //,一个平方或开方,另一个是向下取整(除法)

  • 注意:关系运算符之间的比较 返回值是bool

 

  •  特殊案例2浮点数之间的比较不能使用==,而是需要做差
  • 注意:python中支持连续比较 

  • and 等价于 &&
  • or 等价于 || 
  • not 等价于

  • 在Python中额外的2种赋值,链式赋值多元赋值

  • 在Python中不支持++--这样的自增自减操作
  • ++a之所以没有语法报错,是Python解释器把+但成正号
  • 同理--a也不会报错,是因为把-当成了负号,负负得正,最终的值依然不变
  • 但是后置++和后置--都是语法上报错的 

 在Python中,还有其他运算符:身份运算符(is,is not),成员运算符(in,not in),位运算符(& | !~^<<)等

2.7 if条件语句

  • 记得加

 

  • 注意: 代码缩进 

2.7 空语句

空语句pass表占位 

 

  •  这里如果没有pass空语句,就会报错

 2.8 while循环

  • 记得加

2.9 for循环 

  • shift+F6:对需要重命名的变量重命名
  • range(起始,终止,步长),且range函数的区间是前闭后开的,

2.10 break和continue

 2.11 def定义函数


 

  • 在python中有个特殊用法,相较于其他语言,函数可以返回多个返回值
  • 如果这多个返回值,不一定都需要,就可以使用_进行占位 

 

  • 在python中,找变量的方法和其他语言也一样,优先局部作用域找,没有的话,从全局
  • 但是python中可以用global 关键字声明变量,使其成为全局变量 

 

  • 与其他语言不同的是,在python只有函数和类才会影响作用域

  • 和其它语言一样,也能给形参赋默认值,
  • 上面的函数也是一个调试小技巧

 

  • python特有的:关键字参数

2.12 列表[]

列表可变,元组不可变

 

  • 在python中列表是可以放不同类型的

 

  • 在python中可以使用列表下标可以用负数-1表示倒数第一个数

切片操作

 

  • 列表的切片操作是不涉及数据拷贝的,且支持负数,也有步长

 

遍历操作 

 

  • 注意2种遍历,一种能赋值,另一种不能赋值 

插入操作 

 

  • 一个是append方法,另一个是insert方法

查找 && 删除

 

拼接

 

  • 建议使用extend方法 

 2.13 元组()

  • 其他同列表但不支持修改,

2.14 字典{}

存放键值对 ,字典的各种操作都是针对key

 


  访问,查找

 

  • 无论是列表还是字典都建议使用[ ] 

 插入,删除

 

  • 字典的[]赋值,存在替换,不存在插入

遍历 

 

  •  常见的三个方法:keys(),values(),items()

2.15 文件操作

# 写文件操作
f = open("1.txt","w")
f.write("早上好\n")
f.write("中午好\n")
f.write("下午好\n")
f.close()

# 读文件操作
# f = open("1.txt",'r',encoding="utf-8")

# 读取2个字符
f = open("1.txt",'r')
result = f.read(2)
print(result)
f.close()

# 按行读取
f = open("1.txt",'r')
for line in f:
    print(f"line = {line}",end=" ")
f.close()

# 读取所有数据
f = open("1.txt",'r')
lines = f.readlines()
print(lines)
f.close()

 

  • 关键字参数encoding = "utf-8"指定参数,end=" "指定最后结尾字符 

2.16 上下文管理器 with as

解决打开文件,却忘记关闭的情况

 

3.认识标准库

Python 标准库 — Python 3.13.0 文档

引入第三方库: import [模块名]

使用 import 可以导入标准库的一个 模块
所谓 "模块" , 其实就是一个单独的 .py 文件.
使用 import 语句可以把这个外部的 .py 文件导入到当前 .py 文件中, 并执行其中的代码.

案例:计算两个日期之间差了多少天 - datetime

import datetime as dt
 
date1 = dt.datetime(year=2012, month=2, day=14)
date2 = dt.datetime(year=2016, month=2, day=3)
print(date2 - date1)

  • 使用 import 语句导入标准库的 datetime 模块

案例:翻转单词顺序 - reverseWord

def reverseWords(s: str):
    tokens = s.split()
    tokens.reverse()
    return ' '.join(tokens)
print(reverseWords("I am a student."))

 

  • 使用 str 的 split 方法进行字符串切分, 指定 空格 为分隔符. 返回结果是一个列表.
  • 使用列表的 reverse 方法进行逆序.
  • 使用 str 的 join 方法进行字符串拼接. 把列表中的内容进行合并.

案例:旋转字符串 - rotateString

def rotateString(s, goal):
    if len(s) != len(goal):
        return False
    return goal in (s + s)
print(rotateString("abcde", "edcba"))

  •  使用 len 求字符串的长度. 如果长度不相同, 则一定不能旋转得到.
  • 将 s 和 自己 进行拼接, 然后直接使用 in 方法来判定 goal 是否是 s + s 的子串

案例:统计给定字符串前缀的字符串数目 - countPrefixes

def countPrefixes(words: list, s: str):
    count = 0
    for word in words:
        if s.startswith(word):
            # s 是以 word 开头
            count += 1
    return count
 
print(countPrefixes(['a', 'b', 'c', 'ab', 'bc', 'abc'], 'abc'))
print(countPrefixes(['a', 'a'], 'aa'))

 

  • 依次遍历 words 中的字符串
  • 直接使用字符串的 startswith 方法即可判定当前字符串是否是 s 的前缀

案例:文件查找工具 - os

  1. 输入要查找的路径, 输入要搜索的文件名(一部分)

  2. 自动的在指定的路径中进行查找~

import os
 
inputPath = input('请输入要搜索的路径:')
pattern = input('请输入要搜索的关键词:')
 
for dirpath, _, filenames in os.walk(inputPath):
    for f in filenames:
        if pattern in f:
            print(f'{dirpath}/{f}')

 

  • 使用 os.walk 即可实现目录的递归遍历.

  • os.walk 返回一个三元组, 分别是 当前路径 , 当前路径下包含的目录名 (多个), 当前路径下包含的文件名 (多个)

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

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

相关文章

Java Map

Map——广义集合的子集 HashTable是早期Java类库提供的一个哈希表实现&#xff0c;扩展了Dictionary类&#xff0c;类结构上与HashMap明显不同&#xff0c;本身是同步的&#xff0c;不支持null键和值&#xff0c;由于同步导致的性能开销&#xff0c;已经很少被推荐使用。 Hash…

【MySQL — 数据库基础】MySQL的安装与配置 & 数据库简单介绍

数据库基础 本节目标 掌握关系型数据库&#xff0c;数据库的作用掌握在Windows和Linux系统下安装MySQL数据库了解客户端工具的基本使用和SQL分类了解MySQL架构和存储引擎 1. 数据库的安装与配置 1.1 确认MYSQL版本 处理无法在 cmd 中使用 mysql 命令的情况&a…

实测数据处理(BP算法处理)——SAR成像算法系列(九)

系列文章目录 《SAR学习笔记-SAR成像算法系列&#xff08;一&#xff09;》 《后向投影算法&#xff08;BPA&#xff09;-SAR成像算法系列&#xff08;二&#xff09;》 《后向投影算法&#xff08;续&#xff09;-SAR成像算法系列&#xff08;八&#xff09;》 文章目录 一…

(数据结构与算法)如何提高学习算法的效率?面试算法重点有哪些?面试需要哪些能力?

面试官眼中的求职者 通过对你算法的考察&#xff01;&#xff01;&#xff01;&#xff01; 缩进太多&#xff01;&#xff01;一般不要超过三层&#xff01;&#xff01;&#xff01;缩进越少&#xff0c;bug越少&#xff1b;逻辑比较复杂&#xff0c;把这些包装成为函数&…

Day05:缓存双写一致性

redis做为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;&#xff08;双写一致性–强一致&#xff09; 一种是一致性要求比较高的同步方案&#xff0c;另一种是允许延迟一致的异步通知。 什么是双写一致性&#xff1f; 双写一致性&#xff1a;当修改了数据库…

vue3+typescript自定义input组件

官方文档&#xff1a;https://cn.vuejs.org/guide/components/events#%E5%AE%9A%E4%B9%89%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6 触发与监听事件​ 在组件的模板表达式中&#xff0c;可以直接使用 $emit 方法触发自定义事件 (例如&#xff1a;在 v-on 的处理函数中)…

代码之丑第一期-缩进

各位小伙伴们,大家好!咱今天就算是正式开张了。实不相瞒,第一期的内容早已写好,但唯独这开篇方式,笔者想了好些时间,包括但不限于如下风格: 斗破苍穹式(已经三刷):代码优雅之力,三段!级别:低级!百年孤独式(困扰于错综复杂的人物关系,放弃):多年以后,面对吐槽…

idea2024加载flowable6.8.1.36遇到的问题-idea启动flowable问题flowable源码启动问题

代码下载地址&#xff1a; https://gitee.com/hanpenghu_admin_admin/flowable6.8.1.git 1.首先是通过顶层目录maven clean install 发现很多子模块并不会install本地mavenStore库&#xff0c;这导致了&#xff0c;一堆相互依赖的模块报错找不到&#xff0c;所以需要根据报错…

Vue.js 中 v-for 指令的三种常见用法详解及key、value、id的作用

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 目录 遍历数组 介绍 代码 遍历对象数组 介绍 代码 遍历对象本身 介绍 代码 效果呈现 key、value、id的作用 1. value 2. key 3. id 在 Vue.js 中&#xff0c…

【论文投稿】国产游戏技术:迈向全球引领者的征途

【IEEE出版南方科技大学】第十一届电气工程与自动化国际会议&#xff08;IFEEA 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看&#xff1a;https://ais.cn/u/nuyAF3 目录 国产游戏技术能否引领全球&#xff1f; 一、国产游戏技术的崛起之路 1.1 初期探索与积…

React的ts文件中通过createElement拼接一段内容出来

比如接口返回一个值 const values [23.00, 40.00/kg];想做到如下效果&#xff0c; 如果单纯的用render渲染会很简单&#xff0c; 但是在ts文件中处理&#xff0c;所以采用了createElement拼接 代码如下&#xff1a; format: (values: string[]) > {if (!values || !val…

江协科技最新OLED保姆级移植hal库

江协科技最新OLED移植到hal库保姆级步骤 源码工程存档 工程和源码下载(密码 1i8y) 原因 江协科技的开源OLED封装的非常完美, 可以满足我们日常的大部分开发, 如果可以用在hal库 ,将是如虎添翼, 为我们开发调试又增加一个新的瑞士军刀, 所以我们接下来手把手的去官网移植源码…

HarmonyOS:使用Emitter进行线程间通信

Emitter主要提供线程间发送和处理事件的能力&#xff0c;包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。 一、Emitter的开发步骤如下&#xff1a; 订阅事件 import { emitter } from kit.BasicServicesKit; import { promptAction } from kit.…

Wi-Fi 进化论:从过去到未来(6/10)

Wi-Fi&#xff08;发音&#xff1a; /ˈwaɪfaɪ/&#xff09;&#xff0c;在中文里又称作“移动热点”&#xff0c;是Wi-Fi联盟制造商的商标作为产品的品牌认证&#xff0c;是基于IEEE 802.11标准的无线局域网通信技术 [6]。基于两套系统的密切相关&#xff0c;也常有人把Wi-F…

【C++初阶】第5课—动态内存管理

文章目录 1. 内存分布2. C语言动态内存管理3. C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. operator new和operator delete函数5. new和delete的实现原理6. malloc/free和new/delete的区别7. 定位new表达式(了解即可) 1. 内存分布 先来做一个关于…

学习threejs,设置envMap环境贴图创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CubeTextureLoader 立…

Matlab Simulink HDL Coder FPGA开发初体验—计数器

目录 一、Simulink设计及仿真二、Verilog HDL代码转换1、参数配置2、HDL代码生成 三、ModelSim仿真分析1、使用自己编写的Testbench文件进行仿真2、使用HDL Coder生成的Testbench文件进行仿真 前言 Simulink HDL Coder‌是一款将Simulink和Stateflow模型转化为可综合的Verilog和…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1&#xff0c;可以用数组存放&#xff0c;如果有雷就用1表示&#xff0c;没雷就用0表示。 2&#xff0c;排查(2,5)这个坐标时&#xff0c;我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

实现点名神器的pyqt6实现

利用python gui创建点名神器&#xff0c;包含加分、导出加分记录、清除加分记录。 点名页面 首先导入学生信息 导入成功 开始点名 点击停止 点过之后&#xff0c;点击加分 加完分 查看加分记录 可以直接进入导出记录和清除历史。 此文到此结束&#xff0c;想要源码的请私聊我&a…

【UE5 C++】判断两点连线是否穿过球体

目录 前言 原理 代码 测试 结果 前言 通过数学原理判断空间中任意两点的连线是否穿过球体&#xff0c;再通过射线检测检验算法的正确性。 原理 &#xff08;1&#xff09;设球体球心的坐标为 &#xff0c;半径为r&#xff1b; &#xff08;2&#xff09;设线段中A点的坐…