【香橙派系列教程】(八)一小时速通Python

news2024/11/15 9:18:16

【八】一小时速通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的特点

  1. Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型。
  2. Python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素。
  3. Python代码块使用空格或制表符缩进的方式分隔代码。
  4. Python仅有31个保留字,而且没有分号、begin、end等标记。
  5. Python是强类型语言,变量创建后会对应一种数据类型,出现在统一表达式中的不同类型的变量需要做类型转换。

2.编写第一个程序

第一种运行方法:Python hello.py

创建一个python_project文件夹,在文件夹内创建一个hello.py:(其实linux系统不是很关心文件的后缀名,py也行,其他也行,但是为了格式还是写成py最好)

hello.py:

print("hello,world!")

保存退出后,输入python hello.py 即可运行程序:

image-20240515092324676

第二种运行方法:./hello.py

在hello.py的开头就指定Python存放路径的解释器:

#! /usr/bin/python
 
print("hello,world!")

并使用chmod +x hello.py来赋予执行权限;

image-20240515093908274

中文支持

如果开头加上“# -* - 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)

image-20240515095405827

==注意:==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 (表达式) :
  语句2elif (表达式) :
  语句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)

image-20240515101811767

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)

image-20240515103223437

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          # 删除字典

image-20240517160932962

8.函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
  • 函数内容以冒号起始,并且缩进
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

func.py:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 定义函数
def printme( str ):
   #"打印任何传入的字符串"
   print(str)
   return
 
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")

image-20240517161335656

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

image-20240517161942042

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()

image-20240517162936110

为什么不直接用r+读写打开之后直接写?

因为foo.txt不存在,而r+不支持创建文件,所以可以先使用w只写打开,w支持“如果文件不存在就创建”

image-20240516214653658

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)

image-20240517171901863

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或列表作为值。我们可以用以下的方式来理解它:

  1. 最外层的dict有两个键:‘Data’和’RequestId’。
  2. 'Data’对应的值是一个内层的dict,它有两个键:‘Elements’和’Sensitive’。
  3. 'Elements’对应的值是一个列表,它包含了一个元素,也就是另一个内层的dict。
  4. 这个内层的dict有四个键:‘Category’、‘CategoryScore’、‘Rubbish’和’RubbishScore’。
  5. ‘Category’对应的值是一个字符串,表示垃圾分类的类别,例如’干垃圾’。
  6. 'CategoryScore’对应的值是一个浮点数,表示垃圾分类的置信度,例如0.8856。
  7. ‘Rubbish’对应的值是一个字符串,表示垃圾的具体名称,例如’'(空字符串)。
  8. 'RubbishScore’对应的值是一个浮点数,表示垃圾名称的置信度,例如0.0。
  9. 'Sensitive’对应的值是一个布尔值,表示是否涉及敏感信息,例如False。
  10. ‘RequestId’对应的值是一个字符串,表示请求的唯一标识符,例如’1AB9E813-3781-5CA2-95A0-1EA334E80663’

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

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

相关文章

codetop标签双指针题目大全解析(C++解法),双指针刷穿地心!!!

写在前面&#xff1a;此篇博客是以[双指针总结]博客为基础的针对性训练&#xff0c;题源是codetop标签双指针近一年&#xff0c;频率由高到低 1.无重复字符的最长子串2.三数之和3.环形链表4.合并两个有序数组5.接雨水6.环形链表II7.删除链表的倒数第N个节点8.训练计划II9.最小覆…

SMU Summer 2024 div2 4th

文章目录 The Fourth Week一、前言二、算法1.最近公共祖先lca倍增算法2.Dijkstra算法<1>&#xff08;游戏&#xff09; 3.拓扑排序3. Bellman-Ford算法4. SPFA算法 三、总结 The Fourth Week 不须计较苦劳心&#xff0c;万事原来有命。 ————宋朱敦儒《西江月世事短如…

大模型岗位面试总结,靠它轻松拿下offer

节前技术群邀请了一些参加大模型面试&#xff08;含实习&#xff09;的同学&#xff0c;分享他们面试算法工程师(大模型方向)的宝贵经验。 之前总结链接如下&#xff1a; 超全总结&#xff01;大模型算法岗面试真题来了&#xff01; 面了 5 家知名企业的NLP算法岗(大模型方向…

计算机组成原理(1):计算机系统概述

计算机底层和计算机原理&#xff01;&#xff01;&#xff01;&#xff01; 研究计算机硬件在底层是怎末运行的&#xff01; 计算机硬件能识别的数据 用低电平表示0 用高电平表示1 皮卡丘使高电压&#xff01; 计算机传递数据是用的电信号&#xff01;&#xff01;&#xff…

云原生-搭建dhcp服务并测试kickstart脚本

# 安装DHCP服务 【为其他服务器提供分配ip地址的功能&#xff0c;前提是其他服务器网卡必须设置成DHCP获取IP地址模式】 [rootpxe ~]# yum install dhcp.x86_64 -y[rootpxe ~]# rpm -qc dhcp /etc/dhcp/dhcpd.conf[rootpxe -]# cat /etc/dhcp/dhcpd.conf## DHCP Server Configu…

NLP论文阅读PALM

NLP论文阅读PALM 模型构成Joint Modeling of Autoencoding and AutoregressionInput&Output RepresentationsCopying Tokens from Context扩展词汇的分布复制分布最终分布 PALM: Pre-training an Autoencoding&Autoregressive Language Model for Context-conditioned …

[flink]部署模式

部署模式 在一些应用场景中&#xff0c;对于集群资源分配和占用的方式&#xff0c;可能会有特定的需求。 Flink为各种场景提供了不同的部署模式&#xff0c;主要有以下三种&#xff1a;会话模式&#xff08;Session Mode&#xff09;、单作业模式&#xff08;Per-Job Mode&…

Linux系统驱动(四)自动创建设备节点

自动创建设备节点 &#xff08;一&#xff09;创建设备节点的机制 1. mknod 将驱动编译到内核中&#xff0c;在内核启动时驱动自动被安装执行 2.devfs&#xff08;2.4内核&#xff09; 3. udev&#xff08;2.6内核至今&#xff09; 注&#xff1a;hotplug — 热插拔 &…

KamaCoder 101. 孤岛的总面积

题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域&#xff0c;且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需…

Bugku -----Web-----全题目解析 (二) 超详细步骤

————————————————————分割线———————————————————— 6.矛盾 这一行从 URL 查询字符串中获取名为 num 的参数值&#xff0c;并将其赋值给 $num 变量。如果 URL 中没有提供 num 参数&#xff0c;或者参数值不是有效的字符串&#xff0c;则…

Modbus-RTU详解

目录 Modbus-RTU协议 帧结构示例 CRC16校验算法 CRC16算法的过程 modbus-rtu的使用 发送数据 接收数据 tcp网口完整实现modbus-rtu协议 使用NModbus4实现modbus-rtu协议 安装NModbus4库。 串口实现NModbus4 Modbus-RTU协议 Modbus RTU 协议是一种开放的串行协议&#xff0c;广…

基于51单片机的无线模块PWM电机调速设计

一、概述 为了实现对直流电机无极调速的需求&#xff0c;提出了一种基于STC 89C52微控制器的直流PWM可调速系统设计方案。根据系统所需达到的控制目的&#xff0c;UL2003驱动芯片作为电动机驱动电路&#xff0c;实现对电机的驱动。控制算法采用经典PWM脉宽调制算法作为控制策略…

充电宝哪个牌子好?学生党适合哪种充电宝?推荐四款性价比充电宝

对于学生党而言&#xff0c;保持手机电量充足是学习、社交和娱乐的基本保证。然而&#xff0c;面对频繁的使用&#xff0c;手机电量常常不够用&#xff0c;这时一款性能优良的充电宝就显得尤为重要。那么&#xff0c;充电宝哪个牌子好呢&#xff1f;对于学生党来说&#xff0c;…

番茄钟工作法

目录 1.使用番茄钟的注意事项和技巧: 2.番茄工作法的优点: 3.番茄钟案例: 从棉花糖实验说起 我得了什么「病」&#xff1f; 外界的诱惑 失效的 Deadline 永远停留在纸上的计划 番茄土豆大作战&#xff1a;番茄工作法简明教程 计划 执行 记录与分析 番茄工作法怎么…

可视化图表与源代码显示的动态调整

可视化图表与源代码显示的动态调整 页面效果描述&#xff1a;本篇代码实现了通过拖动一个可调整大小的分隔符&#xff0c;用户可以动态地调整图表显示区域和源代码显示区域的大小。通过监听鼠标事件&#xff0c;当用户拖动分隔符时&#xff0c;会动态计算并更新两个区域的大小 …

俄组织Fighting Ursa利用虚假汽车销售广告传播HeadLace后门

最近&#xff0c;Palo Alto Networks的科研人员揭露了有一个与俄罗斯有关联的威胁行动者——Fighting Ursa&#xff08;亦称APT28、Fancy Bear或Sofacy&#xff09;。该组织通过散布虚假的汽车销售广告&#xff0c;特别是针对外交官群体&#xff0c;散播名为HeadLace的后门恶意…

6款打印刻录监控与审计系统 | 一键解锁器功能探析

信息高度敏感的社会环境&#xff0c;企事业单位对于文档的安全传输、打印与刻录过程的监控与审计需求日益迫切。 然而&#xff0c;为了全面满足读者对安全工具的了解需求&#xff0c;这篇文章小编将首先概述几款领先的打印刻录监控与审计系统&#xff0c;随后简要提及“一键解…

【Java】Collection中自定义类重写contains方法。

如果集合中存储的是自定义对象&#xff0c;也想使用contaisn方法来判断是否包含&#xff0c;那么在javabean类中&#xff0c;一定要重写equals方法。 因为contains方法的底次是使用equals方法实现的&#xff0c;所以重写equals方法。 Main类&#xff1a; package demo;import…

SQL注入(闯关游戏)

目录 关卡1 关卡2 关卡3 关卡4 关卡5 关卡6 关卡7 关卡8 关卡9 关卡10 关卡11 关卡12 关卡13 关卡14 关卡15 关卡16 关卡17 关卡18 关卡19 关卡20 关卡21 关卡22 关卡23 关卡24 关卡1 (联合查询) ?gid1 第一件事情就是逃脱单引号的控制——》为了闭…

vue+element 根据父容器动态设置table高度出滚动条

可以通过CSS样式来控制表格的高度&#xff0c;并使用JavaScript动态地设置这个高度。 HTML: <template><el-table:data"tableData":height"tableHeight"style"width: 100%"><!-- 列配置 --></el-table> </template&…