Python小炼(1):初识Python

news2024/12/24 13:52:58

"也许对我来说,太多拘束可能" 


        本篇的主要内容,针对的是一些常见的语法,在python中是怎样表示的,例如,python变量如何定义、选择、循环、判断结构是如何表示的?python函

数定义是怎么定义的……

       ----前言

一、认识python解释器 

我们 直接进入命令行敲 python的时候,就会进入python解释器。 下面我们看到的就是 一个属于python 的shell

这个解释器 可以认为是一个基本的计算器,当然 也可以执行合法的python语句。

但是更多的时候,我们是将代码写在一个 .py后缀的文件里,通过python解释器 来执行这个.py文件里的代码。

二、初始Python

(1)赋值和初始化

①动静态类型: 

1.在python中 已经不用像 C++ 或者 Java那样 声明类型

2.python中可以将初始化 和 赋值等价 

3.同样 python中的任意一个变量 都属于动态类型,而非静态类型

//内建函数 type 可以查看变量的类型.
print(type(变量名))

 不过 python在变量命名方面 比较敏感;

1.变量名必须是字母, 数字, 下划线. 但是不能用数字开头(规则和C语言一样).
2.变量名大小写敏感, case 和 Case 是两个不同的变量.
3.变量命名要做到 "见名知意" .

②变量表示范围

1.Python中的数字变量的取值范围, 并没有限制(完全取决于你机器的内存多大), 而不是像C语言中int用4个 字节表示.
2.Python中还有一种 "复数" 类型. 和数学中的 "复数" 是相同的概念

 

(2)字符串

①三个引号 

Python中可以使用 单引号('), 双引号("), 三引号('''/""") 来表示字符串 

并且,python中没有 字符概念

#内嵌命令 计算字符串的长度
print(len(变量名))

这样做的目的 是为了避免蹩脚的 转义 

②切片与索引 

1.使用索引操作符 [] 或者切片操作符 [:] 来获取子字符串(切片操作是一个前闭后开区间).
2.字符串的索引规则是: 第一个字符索引是0, 最后一个字符索引是-1(可以理解成len-1).

③字符串运算符

 用于字符串连接运算, * 用于字符串重复

④格式化替换

格式化字符串, 可以使用 % 这样的方式进行格式化的替换.  

a = 100
ptr = "a = %d"
result = ptr % a
print(result)
#######################
a = 100
print("a = %d" % a)

(3)布尔类型

Python中用True和False来表示布尔值(注意, 第一个字符大写).

布尔类型是一种特殊的整数类型。 运算时只表示1 或 0 

 (4)输入输出 与 注释

1.print函数将结果输出到标准输出(显示器)上.

2.input函数从标准输入中获取用户输入.

input接收的变量类型 都为字符串类型 如果需要得到int 类型 需要强转 

在python中 '#'是注释。 不解释

(5)操作符

Python中支持 + - * / % 这样的操作符. 并且它们的行为都和C语言一样.
/ 是 "精确除法
// 就类似于 "取整"

当然python的 负数除法 与 C++/C  还有其他差异,但不是本篇的重点。

该文章可以为你 提供一个途径了解。

学途的踉跄~TOP2 取模取余,傻傻分不清~https://blog.csdn.net/RNGWGzZs/article/details/124067177


三、python语句结构 

python同样也有自己的 选择、分支、循环语句。 但是使用上和 C++ \ java这些早些语言 有些细微的差异。 

(1)if语句 

①代码块缩进

Python中使用缩进来表示代码块. 相当于天然从语法的角度规定了代码风格.
Python是独一无二的使用缩进而不是{}的, 这就避免了一场党派之争~

 

 python干脆"快刀斩乱麻",摈弃了大括号!

标准的if条件语句语法为如下:
如果表达式的值非0或者为布尔值True, 则执行 do_something, 否则执行下一跳语句.

python省略去了{} 用来包裹代码的符号。 条件的末尾+ ”:” 

并且 另起一行 一定是以"Tab"的格式

if expression:
        do_something1
        do_something2
next_something
if expression:
        do_something1
else:
        do_something2

python 中else if 被改为elif的连写

if expression1:
        do_something1
elif expression2: (python中的else if 是连起来写的)
        do_something2
else:
        do_something3

Python坚持一切从简,因此并不支持switch/case这样的语句(毕竟有if/else). 也没有必要支持. 实际上 switch/case 语法并不优雅。

(2)while循环语句 

while循环语句和if语句语法类似.只要表达式的值非0或者为True, 就会循环执行do_something

while expression:
do_something

(3)for循环

Python中的for循环和传统的for循环不太一样.
for循环接收可迭代对象(序列或者迭代器)作为参数, 每次迭代其中的一个元素

for elem in 迭代对象:
        do_somethings.

next_somethings

关于迭代对象 在这里也不多赘述。 我们在之后会遇到很多 可以进行迭代的对象!

(4) pass/break/continue

break/continue都很熟。 要么离开循环 要么跳过continue以后的代码 直接进行条件判定。

①pass 

pass 是一个全新的概念。

在python中,有时候需要用到"空语句"这样的概念, 什么都不做. 由于没有 {} , 需要有一个专门的语句来占位, 要不缩进就混乱了。


四、初窥门径

上面仅仅 简洁地介绍了 Python的入门。 下面来上上开胃菜~

(1)序列

包含若干个元素, 元素有序排列, 可以通过下标访问到一个或者多个元素. 这样的对象, Python中统一称为序列(Sequence).
Python中的以下对象都属于序列:
字符串/列表/元组

①序列操作符 

下列标准类型操作符, 大多数情况下都是适用于序列对象的.

(少部分特例是, 序列中保存的元素不支持标准类型操作符)

1.in/not in: 判定一个元素是否存在于序列中, 返回布尔值

2.连接操作符(+): 把两个相同类型的序列进行连接.

3.重复操作符(*): 让一个序列重复N次

②切片操作 

 切片操作符([], [:], [::]): 通过下标访问其中的某一个元素, 或者某个子序列.同上面所述的字符串切片相同。

Python如何对待 越界 索引呢?

正数的索引以序列的起始位置作为起点, 负数的索引以序列的结束位置做为起点.
试图访问一个越界的索引, 会引发异常

 其他的在字符串 那小段 讲了切片内的内容。

注意:切片不必担心 下标越界。 因为它只会取 区间内能取到的元素。

③序列里的内建函数

len:返回序列长度

max:返回序列中的最大值

min: 返回序列中的最小值
sum: 序列中的元素求和(要求序列中的元素都是数字)
enumerate: 同时枚举出序列的下标和值
zip:可以理解为行列互换

sorted: 排序.  

sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效

 sort排序;

from funtools import com_key_to

enumerate:

取出序列容器中的 下标 与 对应的值 

(2)列表/元组/字典

①存储与访问 

列表和元组类似于C语言中的数组,字典 是一种哈希结构
使用 [] 来表示列表, 使用 () 来表示元组 , 使用{}来表示字典.

1.列表和元组能保存任意数量, 任意类型的Python对象
2.可以使用下标来访问里面的元素, 下标从0开始. 最后一个下标为-1(类似字符串下标访问)

3.列表和元组唯一的区别是, 列表中的元素可以修改, 但是元组中的元素不能修改.

4.可以使用[:]切片操作得到列表或元组的子集. 这个动作和字符串操作是一样的

元组不支持修改 但是列表能:

字典的访问 本质就是Key  与 value的对应:

进行切片(字典无切片):

②常用操作之列表;

注:连接操作符“+” , 往往并不高效(新创建对象, 把原有对象拷贝进去).

对于列表, 推荐使用extend来完成这样的操作; 对于字符串, 推荐使用join这样的方法

关于sort; 

③常见操作之元组

切片操作: 和列表相同
比较运算符, 规则和列表相同.
连接操作(+), 重复操作(*), 判定元素存在(in/not in)都和列表相同.
由于元组不可变, 所以并不支持append, extend, sort等修改"自身"的操作

 当我们使用C++ 或者Java时 似乎return 只能返回一个值。 但是到了python里就不一样了,它可以在一个函数(之后会讲)里返回多个值;

 

④常见操作之字典

pop:删除指定 对象

len: 字典中键值对的数目
hash: 判定一个对象是否可hash. 如果可hash, 则返回hash之后的hashcode. 否则会运行出错

in/not in:判定一个key 是否在字典中!

keys:包含字典的所有的key

values:返回一个列表, 包含字典的所有value
items: 返回一个列表, 每一个元素都是一个元组, 包含了key和value

字典的循环遍历;

借助items的循环遍历;

(3)函数 

函数想必 有基础的肯定不会陌生

一些可以被重复使用的代码, 可以提取出来放到函数中.
Python使用def来定义一个函数. 使用return来返回结果 

def Add(x, y): #def定义
        return x + y

print(Add(1, 2)) #调用

1.Python中没有 "重载" 这样的概念. 相同名字的函数, 后面的会覆盖前面的

2.Python支持默认参数. 函数的参数可以具备默认值

3.Python支持多参数返回。 可以用_用来占位 不想接收的返回值

4.Python函数也是一个对象.

1. 

2.

3.在上面也说过python中的函数返回值可以有 多个。

 4.函数对象;

gp 就类似C/C++中的 函数指针(lambda表达式、仿函数). 


总结:

①python类型是动态类型,没有范围的限制。

②字符串\列表\元组皆 序列。 能进行切片[]。 [::] (范围+ 步长)

③while\for\if 的新语法。 pass可以标识一个 空语句。

④for的循环依靠 迭代对象 如:range() 字符串、列表、元组、字典......

⑤列表元组都有+、*、in/not in 但针对自身操作的extend 、append 、 sort 是没有的。

⑥字典keys 、 values 、items 分别可取得字典中的key、对应的value值。 items可以充当迭代对象。

⑦函数定义 def 函数名():  python的函数可以返回多个值。

本篇到此结束 ,感谢你的阅读~

祝你好运

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

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

相关文章

无需代理及注册在VsCode中使用ChatGPT

无需代理及注册在VsCode中使用ChatGPT 安装 要安装扩展,请按照下列步骤操作: 1.打开 Visual Studio Code 2.单击左侧栏中的扩展程序图标 3.搜索"ChatGPT中文版" 4.点击安装按钮安装扩展 5.重启VSCode 用法 开始使用 在编辑器中右键触发…

【LeetCode每日一题:1691. 堆叠长方体的最大高度~~~排序+贪心】

题目描述 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始&#xff09;。请你从 cuboids 选出一个 子集 &#xff0c;并将它们堆叠起来。 如果 widthi < widthj 且 lengthi < …

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

文章目录零、本讲学习目标一、对象序列化与反序列化&#xff08;一&#xff09;对象序列化与反序列化概念&#xff08;二&#xff09;对象序列化与反序列化示意图&#xff08;三&#xff09;实际开发中序列化和反序列化的场景&#xff08;四&#xff09;实现对象序列化的两种方…

26岁,干了三年测试,月薪才12k,能跳槽找到一个更高薪资的工作吗?

在我们的身边&#xff0c;存在一个普遍现象&#xff1a;很多人从事软件测试岗&#xff0c;不计其数&#xff0c;经历的心酸难与外人道也。可是技术确难以提升、止步不前&#xff0c;薪资也只能看着别人水涨船高&#xff0c;自己却没有什么起色。 虽然在公司里属于不可缺少的一…

计算机网络:数据链路层

数据链路层 数据链路层主要处理单个链路上如何传输数据&#xff0c;并且向网络层向上提供服务 1. 数据链路层概述 1.1 术语介绍 主机拥有全部的计算机网络结构&#xff0c;路由器只有一部分 各个路由器之间由物理层连接 红线为发送的信息 1.2 数据链路层的三个重要问题 封装…

职业危机:从无到有,从弱到强;反思再反思和应对措施

一、写在开头 每天每周不写点东西&#xff0c;不把脑中的疑惑写明白&#xff0c;就感觉不到每天的进步。 每天没进步&#xff0c;这北漂生活&#xff0c;何时是个头啊。 可以北漂10年&#xff0c;也可以20年&#xff0c;但不可能是一辈子。 因为我不是北京人呐。 二、持续转…

Redis的字符串是怎么实现的

本篇会讲以下内容&#xff1a; Redis字符串的实现 Redis字符串的性能优势 Redis字符串的实现 Redis虽然是用C语言写的&#xff0c;但却没有直接用C语言的字符串&#xff0c;而是自己实现了一套字符串。目的就是为了提升速度&#xff0c;提升性能&#xff0c;可以看出Redis为…

Nacos的服务注册之客户端

服务注册到Nacos以后,会保存在一个本地注册表中,这个注册表是一个map. private Map<String, Map<String, Service>> serviceMap new ConcurrentHashMap<>(); key是namespace,用来隔离环境 value又是一个map      key是group      value又是一个s…

java计算机毕业设计springboot+vue远程教育系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

以太网 DHCP(简介、DHCP工作原理、租期时间)

2.13.0 以太网 DHCP&#xff08;简介、DHCP工作原理、租期时间&#xff09; DHCP的作用&#xff1a;企业网络中存在大量的终端设备&#xff08;PC&#xff09;&#xff0c;管理员配置设备上网参数工作量大&#xff0c;而且效率不高&#xff0c;手动配置容易出错&#xff0c;DH…

数据库复杂sql如何编写入手

前言&#xff1a;说到数据库我想大家都不陌生&#xff0c;对主流的数据库都会基本使用&#xff0c;但是要写好sql完成复杂的sql编写是需要对数据库原理&#xff0c;sql脚本语法有一定的了解的&#xff0c;但是对于开发人员来说&#xff0c;平常都是在curd写一些业务代码&#x…

Flutter 中使用 OpenAI GPT-3 进行语义化处理

Flutter 中使用 OpenAI GPT-3 进行语义化处理 前言 最近 openai 的 ChatGPT 火了&#xff0c;然后我也想着用它来做点什么&#xff0c;于是就写了个 调用 openai api 语言执行工具&#xff0c;跑个测试&#xff0c;以后再有功能也可以在这个程序上面试验。 copilot 也是用的 op…

m基于FPGA的64QAM调制解调、载波同步verilog实现

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 64QAM&#xff08;正交幅度调制&#xff09;&#xff0c;在使用同轴电缆的网络中&#xff0c;这种数字频率调制技术通常用于发送下行链路数据。64QAM在6mhz信道中&#xff0c;64QAM的传输速率非常…

Qt编写视频监控系统(移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等)

一、前言 得益于标准的onvif协议&#xff0c;各大监控厂商的设备都会支持onvif协议&#xff0c;在onvif协议中就包括了事件订阅机制&#xff0c;通过这个机制&#xff0c;可以拿到各种报警事件&#xff0c;比如移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等&#xff0c…

深度学习-环境搭建(安装Pytorch)

文章目录前言一、安装Anaconda二、查看电脑显卡支持的CUDA版本三、更新CUDA版本四、创建并激活Anaconda虚拟环境需要创建虚拟环境而最好不在base下载的原因五、安装pytorchPS&#xff1a;注意事项六、下载其他库七、检查安装结果总结前言 入门深度学习过程中&#xff0c;我决定…

[附源码]JAVA毕业设计鞋店销售管理(系统+LW)

[附源码]JAVA毕业设计鞋店销售管理&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

都在说软件测试真的干不到35岁,那咋办呢...我都36了...

作为一个已经36岁但仍奋战在测试一线的老测试员&#xff0c;被人无数次问到这个问题&#xff0c;也回答过无数次&#xff0c;刚看到 程序员真的干到35岁就干不动了吗 想到&#xff0c;在测试行业&#xff0c;也有很多年轻人在焦虑这个问题。现在小编就从管理、技术、思维、体力…

Pytho——naiohttp的简单使用

1.aiohttp的简单使用(配合asyncio模块) import asyncio,aiohttpasync def fetch_async(url):print(url)async with aiohttp.request("GET",url) as r:reponse await r.text(encoding"utf-8")  #或者直接await r.read()不编码&#xff0c;直接读取&…

我不谈ChatGPT

&#xff08;1&#xff09;数据有两个未经证实的传闻&#xff1a;1、客服问答&#xff1a;80%用户问的问题都是那20%常见问题&#xff0c;但是就是这样&#xff0c;占用了客服人员80%的工作量和工作时间2、资讯搜索&#xff1a;谷歌一位员工说&#xff0c;在互联网上&#xff0…

Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)

​​​​​​​ Spring Cloud Alibaba简介 什么是Spring Cloud Alibaba Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。 此项目包含开发分布式应用微服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 为…