【香橙派系列教程】(八)一小时速通Python
【八】一小时速通Python
本章内容服务于香橙派下的开发,用C语言的视角来学习即可,会改就行。
详细说明,请看链接:python全篇教学
Python是一种动态解释型的编程语言,Python可以在Windows、UNIX、MAC等多种操作系统上 使用,也可以在Java、.NET开发平台上使用。
文章目录
- 【八】一小时速通Python
- 1.Python的特点
- 2.编写第一个程序
- 3.输入输出变量
- 4.流程控制
- 5.列表
- 6.元组
- 7.字典
- 8.函数
- 9.模块
- 10.文件
- 11.字典的多层嵌套
- 12.总结
1.Python的特点
- Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型。
- Python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素。
- Python代码块使用空格或制表符缩进的方式分隔代码。
- Python仅有31个保留字,而且没有分号、begin、end等标记。
- Python是强类型语言,变量创建后会对应一种数据类型,出现在统一表达式中的不同类型的变量需要做类型转换。
2.编写第一个程序
第一种运行方法:Python hello.py
创建一个python_project
文件夹,在文件夹内创建一个hello.py
:(其实linux系统不是很关心文件的后缀名,py也行,其他也行,但是为了格式还是写成py最好)
hello.py:
print("hello,world!")
保存退出后,输入python hello.py
即可运行程序:
第二种运行方法:./hello.py
在hello.py的开头就指定Python存放路径的解释器:
#! /usr/bin/pythonprint("hello,world!")
并使用chmod +x hello.py
来赋予执行权限;
中文支持
如果开头加上“# -* - coding: UTF-8 -* -” 则可以支持中文显示,所以py文件的开头就默认写这两句话:
#! /usr/bin/python
# -* - coding: UTF-8 -* -
3.输入输出变量
- 输出就是刚刚演示的print函数,注意print函数会自动在打印后加上换行符;
- 获取用户输入则使用input函数
input.py:
#! /usr/bin/python
# -* - coding: UTF-8 -* -s = input("输入内容,按下ENTER结束\n")
print(s)
==注意:==input返回的永远都是字符串,所以如果想要给 整数或者浮点数 等不是字符串的变量 赋值时,需要进行强转:a = int(a)
4.流程控制
- python不支持自增运算符和自减运算符。例如i++/i-是错误的,但i+=1是可以的。
- 1/2在python2.5之前会等于0.5,在python2.5之后会等于0。
- 不等于为!=或<>
- 等于用==表示
- 逻辑表达式中and表示逻辑与,or表示逻辑或,not表示逻辑非
if/else:
if (表达式) :语句1
elif (表达式) :语句2
…
elif (表达式) :语句n
else :语句m
for:
for 变量 in 集合 :…
else : #一般不用…
while:
while(表达式) :…
else : #一般不用…
5.列表
列表List:
-
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
-
Python有6个序列的内置类型,但最常见的是列表和元组。
-
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
-
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
-
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
-
列表的数据项不需要具有相同的类型
list.py:
#! /usr/bin/python
# -* - coding: UTF-8 -* -list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]print("list1[0]: ", list1[0])
print("list2[1:5]: ", list2[1:5])list1.append('Google') ## 使用 append() 添加元素
list2.append(8)
print(list1)
print(list2)del list1[2] ##使用del命令删除list
print(list1)
6.元组
- Python 的元组与列表类似,不同之处在于元组的元素不能修改
- 元组使用小括号,列表使用方括号
- 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
tuple.py:
#! /usr/bin/python
# -* - coding: UTF-8 -* -tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )print("tup1[0]: ", tup1[0])
print("tup2[1:5]: ", tup2[1:5])# 以下修改元组元素操作是非法的。
# tup2[0] = 100# 创建一个新的元组
tup3 = tup1 + tup2
print(tup3)del tup3 #删除元组
print("after delete:")
print(tup3)
7.字典
-
字典是另一种可变容器模型,且可存储任意类型对象
-
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式:d = {key1 : value1, key2 : value2 }
-
dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict
-
键(key)一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
-
值(value)可以取任何数据类型,但键(key)必须是不可变的,如字符串,数字或元组
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象
字典值(value)可以没有限制地取任何 python 对象,既可以是标准的对象,也可以是用户定义的,但键(key)不行
dict.py:
#! /usr/bin/python
# -* - coding: UTF-8 -*tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print("tinydict['Name']: ", tinydict['Name'])
print("tinydict['Age']: ", tinydict['Age'])## print("tinydict['Alice']: ", tinydict['Alice']) #由于没有名为Alice的key,所以这句会报错tinydict['Age'] = 8 # 更新
tinydict['School'] = "RUNOOB" # 添加
print("tinydict['Age']: ", tinydict['Age'])
print("tinydict['School']: ", tinydict['School'])del tinydict['Name'] # 删除键是'Name'的条目
tinydict.clear() # 清空字典所有条目
del tinydict # 删除字典
8.函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
- 函数内容以冒号起始,并且缩进
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
def functionname( parameters ):"函数_文档字符串"function_suitereturn [expression]
func.py:
#!/usr/bin/python
# -*- coding: UTF-8 -*-# 定义函数
def printme( str ):#"打印任何传入的字符串"print(str)return# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")
9.模块
support.py:(作为一个模块)
def print_func( par ):print("Hello : ", par)return
demo2.py:(调用support模块)
#!/usr/bin/python
# -*- coding: UTF-8 -*-# 导入模块
import support
#也可以 import print_func from support# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
#这里可以直接写成print_func("Runoob") 如果刚刚写成import print_func from support
10.文件
file.py:
#!/usr/bin/python
# -*- coding: UTF-8 -*-# 打开一个文件,只写,且文件不存在就创建
fo = open("foo.txt", "w")
#写内容
fo.write( "mjm! Very good!\n")
# 关闭打开的文件
fo.close# 打开一个文件,读写
fo = open("foo.txt", "r+")
#读内容
str = fo.read(20)
print("读取的字符串是 : ", str)# 查找当前位置
position = fo.tell()
print("当前文件位置 : ", position)# 把指针再次重新定位到文件开头
position = fo.seek(0, 0)
str = fo.read(20)
print("重新读取字符串 : ", str)
# 关闭打开的文件
fo.close()
为什么不直接用r+读写打开之后直接写?
因为foo.txt不存在,而r+不支持创建文件,所以可以先使用w只写打开,w支持“如果文件不存在就创建”
11.字典的多层嵌套
这里为什么要加一节这个呢?
在后面我们要用到阿里云的服务平台,他的Python接口返回的就是一个字典的嵌套,我们需要对他进行一个处理,在这里直接讲述
KEY值可以用数字,字符串或元祖充当,但用列表就不行。
下面这里有一个字典嵌套数据,我们想要获取里面的干垃圾,应该如何写代码?一层一层剥离出来
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tinydict ={'name':'runoob','likes':123,'url':'www.runoob.com'}garbage_dict = {'Data':{'Elements':[{'Category':'干垃圾','CategoryScore':0.8855999999999999,'Rubbish':'','RubbishScore':0.0}],'Sensitive':False},'RequestId':'1AB9E813-1AB9E813-3781-5CA2-98A0-1EA334E80663'}
dict2.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tinydict ={'name':'runoob','likes':123,'url':'www.runoob.com'}garbage_dict = {'Data':{'Elements':[{'Category':'干垃圾','CategoryScore':0.8855999999999999,'Rubbish':'','RubbishScore':0.0}],'Sensitive':False},'RequestId':'1AB9E813-1AB9E813-3781-5CA2-98A0-1EA334E80663'}data = garbage_dict['Data']
print("data=",data)elements=data['Elements']
print("elements=",elements)element=elements[0] #去列表第0个元素
print("element=",element)category=element['Category']
print("category=",category)
category2=garbage_dict['Data']['Elements'][0]['Category']
print("字典支持一步到位:",category2)
12.总结
在前面简单介绍了dict(字典)的使用,字典(Dictionary)是Python里非常常见的一种数据结构,如果是在其他语言里,一般称做
map。是由键(key)和值(value)成对组成,键和值中间以冒号":“隔开,键值对之间用”,“隔开,整个字典由大括号”{}"括起来。
格式如下:
dict = {key1 : value1, key2 : value2 }
如例子:
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
这里面,键一般是唯一的,如果重复了, 最后的一个键值对(Key:value)会替换前面的。 而且键可以用数字,字符串或元组充当,用列表不行。而且值就不需要唯一,而且形式多样,比如可以以列表或者dict的形式出现。
dict的使用非常灵活, 甚至可以和列表组合使用, 列表里能嵌套列表,也能嵌套字典。同样的,字典里能嵌套字典,字典里也能嵌套列表。
如下面这个例子:
garbage_dict = {'Data': {'Elements': [{'Category': '干垃圾', 'CategoryScore': 0.8855999999999999, 'Rubbish':'', 'RubbishScore': 0.0}], 'Sensitive': False}, 'RequestId': '1AB9E813-3781-5CA2-95A0-1EA334E80663'}
这个例子里的dict内容是就是一个嵌套的结构,也就是说,它包含了其他的dict或列表作为值。我们可以用以下的方式来理解它:
- 最外层的dict有两个键:‘Data’和’RequestId’。
- 'Data’对应的值是一个内层的dict,它有两个键:‘Elements’和’Sensitive’。
- 'Elements’对应的值是一个列表,它包含了一个元素,也就是另一个内层的dict。
- 这个内层的dict有四个键:‘Category’、‘CategoryScore’、‘Rubbish’和’RubbishScore’。
- ‘Category’对应的值是一个字符串,表示垃圾分类的类别,例如’干垃圾’。
- 'CategoryScore’对应的值是一个浮点数,表示垃圾分类的置信度,例如0.8856。
- ‘Rubbish’对应的值是一个字符串,表示垃圾的具体名称,例如’'(空字符串)。
- 'RubbishScore’对应的值是一个浮点数,表示垃圾名称的置信度,例如0.0。
- 'Sensitive’对应的值是一个布尔值,表示是否涉及敏感信息,例如False。
- ‘RequestId’对应的值是一个字符串,表示请求的唯一标识符,例如’1AB9E813-3781-5CA2-95A0-1EA334E80663’
相关文章:

【香橙派系列教程】(八)一小时速通Python
【八】一小时速通Python 本章内容服务于香橙派下的开发,用C语言的视角来学习即可,会改就行。 详细说明,请看链接:python全篇教学 Python是一种动态解释型的编程语言,Python可以在Windows、UNIX、MAC等多种操作系统上 使用&…...

了解JavaScript 作用、历史和转变
JavaScript 是一种即时执行的脚本语言,其代码在浏览器环境中通过内置的 JavaScript 引擎被动态地一行接一行地解释执行。这一特性赋予了开发者极高的灵活性和效率,因为代码修改后能立即生效,无需经历编译过程,从而加速了开发周期和…...

遗传算法与深度学习实战——生命模拟与进化论
遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等,试图模…...

rt-thread H7 使用fdcan没有外接设备时或发送错误时线程被挂起的解决方案
一、问题查找 使用的开发版是硬石的H7芯片型号STM32H743IIT6,测试时发现如果外面没有连接CAN设备,程序调用CAN发送时会一直等待发送反馈,导致相关线程挂起。 在线仿真时发现是卡在can.c文件的168行_can_int_tx函数:rt_co…...

exptern “C“的作用,在 C 和 CPP 中分别调用 openblas 中的 gemm 为例
openblas提供的sgemm有两种方式,一种是通过cblas,另一种是直接声明并调用 sgemm_ 其中,cblas方式是更正规调用方法; 1,调用openblas的 sgemm 的两种方式 1.1 c语言程序中使用 sgemm hello_sgemm.c #include <st…...

如何提前预防网络威胁
一、引言 随着信息技术的迅猛进步,网络安全议题愈发凸显,成为社会各界不可忽视的重大挑战。近年来,一系列网络安全事件的爆发,如同惊雷般震撼着个人、企业及国家的安全防线,揭示了信息安全保护的紧迫性与复杂性。每一…...

ProviderRpc发送服务二将远程调用来的信息反序列化后调用服务方的方法,并将服务方的结果返回给发送方
在Provider的实现中,OnMessage函数中,处理接收到的连接RPC请求。将接收到的RPC请求(包含请求的对象,请求方法和 请求参数),接收到这些信息之后进行反序列化。得到这些参数之后我们即将要做的事情是去调用相…...

Io 35
FIleinputStream字节输入 package File.io;import java.io.*;public class io1 {public static void main(String[] args) throws IOException {// InputStream is new FileInputStream(new File("C:\\Users\\SUI\\Desktop\\Java1\\one\\src\\kaishi"));//简化Input…...

java基础概念11-方法
一、什么是方法 方法(method)是程序中最小的执行单元。 方法中的程序,要不然就是一起执行,要不然就是一起不执行!!! 二、方法的定义 在Java中,方法定义的一般格式如下:…...

大模型应用中的思维树(Tree of Thought)是什么?
大模型应用中的思维树(Tree of Thought)是什么? 大模型,特别是基于GPT(Generative Pre-trained Transformer)架构的模型,在处理复杂任务时,通常需要依赖某种形式的推理和决策机制。…...

学习记录(11):训练图片分类的算法
文章目录 一、卷积神经网络(CNN)架构1. ResNet(Residual Networks)2. DenseNet(Densely Connected Convolutional Networks)3. EfficientNet4. MobileNet 二、变换器(Transformer)架…...

上网防泄密,这些雷区不要碰!九招教你如何防泄密
李明:“最近看到不少关于信息泄露的新闻,真是让人担忧。咱们在工作中,稍有不慎就可能触碰到泄密的雷区啊。” 王芳:“确实,网络安全无小事。尤其是我们这种经常需要处理敏感信息的岗位,更得小心谨慎。那你…...

数据库篇--八股文学习第十五天| 一条SQL查询语句是如何执行的?,事务的四大特性有哪些?,数据库的事务隔离级别有哪些?
1、一条SQL查询语句是如何执行的? 答: 连接器:连接器负责跟客户端建立连接、获取权限、维持和管理连接。查询缓存: MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以…...

elk + filebeat + kafka实验和RSync同步
elk filebeat kafka实验和RSync同步 elk filebeat kafka实验 filebeatkafkaELK实验的操作步骤: #在装有nginx的主机上解压filebeat压缩包 [roottest4 opt]# tar -xf filebeat-6.7.2-linux-x86_64.tar.gz #将解压后的压缩包更改名字 [roottest4 opt]# mv file…...

子类到底能继承父类中的哪些内容?
...

【超详细公式】曝光值(EV)、光圈(AV)、快门(TV)、感光度(SV)、照度(Lux)
文章目录 术语 E V A V T V − S V EV AV TV - SV EVAVTV−SV L u x 2.5 2 E V Lux 2.5 \times 2^{EV} Lux2.52EV通常环境光照度参照表 术语 术语全称中文名EVExposure Value曝光值AVAperture Value光圈值TVTime Value快门值SVSensitive Value感光值BVBrightness Value…...

【Java】增强for遍历集合。
增强for遍历 增强for底层就是迭代器。所有的单列集合和数组才能使用增强for遍历。 在循环过程中无法对集合中的元素进行修改。 package demo;import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class submit {public static void …...

【Qt】管理创建子项目
新建项目 打开是这样,无法添加子项目 pro添加 TEMPLATE subdirs有了 点击添加子项目 其他项目-子目录项目 (空的子项目,只有pro,无h、cpp) 子目录名字 直接创建子目录下子项目 选择有无界面或者其他类型项目 …...

力扣——238.移动零
题目 思路 利用双指针,先找到第一个为0的地方指向,指针2指向下一个,指针1之前是已经处理好的数据,指针2进行遍历,遇到非零则与指针1数据交换,然后指针1。 代码 class Solution { public:void moveZeroes(…...

编程的魅力
在数字化时代,编程已不仅仅是计算机科学家的专属领地,它正逐渐渗透到我们生活的每一个角落,成为连接现实与虚拟、创新与传统的重要桥梁。编程,这一门融合了逻辑、创造与解决问题的艺术,正以其独特的魅力引领着新一轮的…...

想提升跨境电商运营?浏览器多开为你助力!
在日常生活中,我们在使用浏览器访问网站时,可能会遇到一个尴尬的情况:无法同时登录一个网站的多个账号。对于跨境电商卖家来说,这种情况更为常见。例如,当我们需要在亚马逊管理店铺时,我们可能已经使用A账号…...

使用QML的ListView自制树形结构图TreeView
背景 感觉QML自带的TreeView不是很好用,用在文件路径树形结构比较多,但是想用在自己数据里,就不太方便了,所以自己做一个。 用‘ListView里迭代ListView’的方法,制作树形结构,成果图: 代码…...

2.MySQL面试题之索引
1. 为什么索引要用 B树来实现呢,而不是 B 树? MySQL 选择使用 B 树来实现索引,而不是 B 树,主要是基于以下几个原因: 1.1 数据存储和访问效率 B 树:在 B 树中,数据和索引都存储在每个节点中。…...

复制CodeIgniter新版的array_group_by辅助函数
很需要php数组的group_by功能,发现codeIgniter4.5新版中已有这个辅助函数,但我用的codeIgniter4.14没有,又不想升级php等一系列东西,就想把把codeIgniter4.5中array_group_by函数复制过来用。 先试着把新版本的array_helper文件及…...

合并两个 ES (Elasticsearch) 的数据
要将两个 Elasticsearch 实例中的同一个索引(/test_index)的数据合并到一个实例中,你可以按照以下步骤操作: 假设 Elasticsearch 1 (ES1) 和 Elasticsearch 2 (ES2) 都有相同的索引 /test_index。希望将 ES2 中的数据合并到 ES1 中。步骤 导出 ES2 的数据:使用 Elasticse…...

Linux网络协议.之 tcp,udp,socket网络编程(四).之网络转换函数htonl,ntohs等介绍
字节转换函数 把给定系统所采用的字节序称为主机字节序,为了避免不同类别主机之间在数据交换时由于对于字 节序的不同而导致的差错,引入了网络字节序。 主机字节序到网络字节序 u_long htonl(u_long hostlong); u_short htons(u_short short); 网络字节…...

LXC和udev知识点
1 POSIX pthread_create原理 1)fork()、pthread_create()、vfork()对应的系统调用分别是sys_fork()、sys_clone()、sys_vfork(),它们在内核中都是通过do_fork()实现的。 2)系统中所有的进程都组织在init_task.tasks链表下面,每个进…...

基于springboot+vue+uniapp的智慧校园管理系统小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...

论文辅导 | 基于概率密度估计与时序Transformer网络的风功率日前区间预测
辅导文章 模型描述 本文所提出的时序优化Transformer 结构,该模型从结构上看由三部分组成:向量映射、编码器和解码器。编码器输入为数值天气预报数据以及相应的时间编码。解码器输入为预测日之前输出功率历史数据以及相应的时间编码。这些数据在经过向量…...

金蝶云星空单据体数量汇总-分组列信息
文章目录 金蝶云星空单据体数量汇总-分组列信息BOS配置效果展示 金蝶云星空单据体数量汇总-分组列信息 BOS配置 效果展示...