嵌入式和Python(二):python初识及其基本使用规则

news2024/12/25 12:29:22

目录

一,python基本特点

二,python使用说明 

● 两种编程方式

① 交互式编程

② 脚本式编程 

● python中文编码

● python行和缩进

● python引号

● python空行 

● python等待用户输入

① 没有转换变量类型

② 转换变量类型

● python变量类型

● Python字符串 

● python条件语句

● Python 循环语句

循环控制语句 


一,python基本特点

● Python是一种 动态解释型 的编程语言。可 移植性强 ,Python可以在Windows、UNIX、MAC等多种操作系统上使用,也可以在Java、.NET开发平台上使用;
● Python 使用 C语言开发 ,但是 Python 不再有C语言中的指针 等复杂的数据类型; Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单;
将Python嵌入到C/C++程序,让你的程序的用户获得" 脚本化 "的能力;
● Python 具有很强的 面向对象 特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素;
● Python 代码块使用空格或制表符缩进的方式分隔代码;
● Python 仅有 31 个保留字,而且 没有分号, begin end 等标记;
● Python 强类型 语言,变量创建后会对应一种数据类型,出现在统一表达式中的不同类型的变量 需要做类型转换
  作为嵌入式开发工作者,用C语言的视角学习python,了解其基本用法,不用过分深究。当然可以根据自己实际需求,来决定是否深入学习。 

二,python使用说明 

声明:下文内容仅梳理了python的部分知识点内容和对应的代码案例,目的也仅在于能对python有一个基本编程规则的了解。

● 两种编程方式

① 交互式编程

交互式编程(也可以认为是指令式)不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。linux上你只需要在命令行中输入Python命令即可启动交互式编程

>>> quit()  //quit()指令,退出python命令行

② 脚本式编程 

通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。下面写一个简单的 Python 脚本程序。所有 Python 文件将以 .py 为扩展名。

其实在linux中,并不会太多关心Python文件的后缀,因为在编译和执行Python程序时候会调用python解释器来解释文件。但为了严谨,尽量规范文件格式。

 python程序的编写极大程度上与shell脚本相识

 

 文件test02.py:

#!/usr/bin/python       //Python解释器在/usr/bin目录中,添加解释器路径
print("hello python!");

 

● python中文编码

原因:

在上面的例子中用 Python 输出 “Hello python”,英文没有问题,但是如果你输出中文字符 "你好,世界" 就有可能会碰到中文编码问题。

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时可能无法正确打印汉字,所以在读取中文时会报错。

解决方法:

只要在文件开头加入 # -*- 编码: UTF-8 -*- 或者 # 编码=utf-8 就行了

注意:# 编码=utf-8 的 = 号两边不要空格。

文件test03.py :

#!/usr/bin/python
# -*- coding:UTF-8 -*-  //加入编码格式

print("你好 世界!");

 

● python行和缩进

Python与其他语言最大的区别就是,Python 的代码块不使用大括号 { } 来控制类,函数以及其他逻辑判断。

python 最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行,否者编译报错。

① 代码没有严格执行缩进相同原则,编译出现如下报错:

  1 #!/usr/bin/python
  2 # -*- coding: UTF-8 -*-
  3
  4 if True:
  5     print ("Answer")
  6     print ("True")
  7 else:
  8     print ("Answer")
  9     # 没有严格缩进,在执行时会报错
 10   print ("False")

 ② 代码执行缩进相同原则,编译正常执行:

  1 #!/usr/bin/python
  2 # -*- coding: UTF-8 -*-
  3
  4 if True:
  5     print ("Answer")
  6     print ("True")
  7 else:
  8     print ("Answer")
  9     print ("False")

● python引号

Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须是相同类型的。

其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。'''xxxxxx'''  或  """xxx"""  类似c语言中注释:  /*xxx*/

>>> print("hello py")  //双引号
hello py
>>> print('hello py')  //单引号
hello py
>>> 

● python空行 

函数之间或类的方法之间用空行分隔,表示一 段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

● python等待用户输入

直接使用 input ,类似于c语言中 scanf ,但比scanf更加简单粗暴

下面的程序执行后就会等待用户输入,按回车键后就会退出:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

input("按下 enter 键退出,其他任意键显示...\n")

以上代码中 ,\n 实现换行。

在执行test04.py后,就会等待用户输入,enter键退出;输入的hello python 就会显示出来,回车退出

注意: 

在上面说明了python的有一项基本特点:Python强类型语言,变量创建后会对应一种数据类型,出现在统一表达式中的不同类型的变量需要做类型转换

所以在实际编程过程中一定要注意变量类型的转换,下面代码举例说明:

① 没有转换变量类型

  1 #!/usr/bin/python
  2 # -*- coding: UTF-8 -*-
  3
  4 a = input("请输入一个加数a:")
  5 b = input("请输入一个加数b:")
  6
  7 ret = a + b
  8
  9 print(ret)

② 转换变量类型

  1 #!/usr/bin/python
  2 # -*- coding: UTF-8 -*-
  3
  4 a = input("请输入一个加数a:")
  5 b = input("请输入一个加数b:")
  6
  7 a = int(a)  //注意转换的格式,与c语言是反着写的
  8 b = int(b)
  9
 10 ret = a + b
 11
 12 print(ret)

 

● python变量类型

Python 中的变量赋值不需要类型声明。但是在上面输入的例子中,就必须要转换变量的类型,注意区分

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号 = 用来给变量赋值。

等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
 
print (counter)
print (miles)
print (name)

 输出结果:

100
1000.0
John

● Python字符串 

根据下面示例代码很容易理解

加号(+)是字符串连接运算符,星号(*)是重复操作

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
str = 'Hello World!'
 
print (str)           # 输出完整字符串
print (str[0])        # 输出字符串中的第一个字符
print (str[2:5])      # 输出字符串中第三个至第六个之间的字符串
print (str[2:])       # 输出从第三个字符开始的字符串
print (str * 2)       # 输出字符串两次
print (str + "TEST")  # 输出连接的字符串
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

● python条件语句

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

Python 编程中 if 语句用于控制程序的执行,基本形式为:

if 判断条件:
    执行语句……
else:
    执行语句……

代码示例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 例1:if 基本用法
 
flag = False
name = 'luren'
if name == 'python':         # 判断变量是否为 python 
    flag = True              # 条件成立时设置标志为真
    print('welcome boss')    # 并输出欢迎信息
else:
    print(name)              # 条件不成立时输出变量名称
luren            # 输出结果

● Python 循环语句

Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环):

循环类型描述
while 循环在给定的判断条件为 true 时执行循环体,否则退出循环体。
for 循环重复执行语句
嵌套循环可以在while循环体中嵌套for循环

循环控制语句 

循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:

控制语句描述
break 语句在语句块执行过程中终止循环,并且跳出整个循环
continue 语句在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass 语句pass是空语句,是为了保持程序结构的完整性。

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

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

相关文章

[Pytorch]DataSet和DataLoader逐句详解

将自己的数据集引入Pytorch是搭建属于自己的神经网络的重要一步,这里我设计了一个简单的实验,结合这个实验代码,我将逐句教会大家如何将数据引入DataLoader。 这里以目标检测为例,一个batch中包含图片文件、先验框的框体坐标、目标…

【C语言进阶:指针的进阶】你真分得清sizeof和strlen?

本章重点内容: 字符指针指针数组数组指针数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组面试题的解析这篇博客 FLASH 将带大家一起来练习一些容易让人凌乱的题目,通过这些题目来进一步加深和巩固对数组,指…

基于注解@Transactional事务基本用法

关于概念性的放在最下面,熟读几遍 在使用时候也没多关注,总是加个Transactional 初识下 一般查询 Transactional(propagation Propagation.SUPPORTS) 增删改 Transactional(propagation Propagation.REQUIRED) 当然不能这么马虎 Spring中关于事务的传播 一个个测试,事…

计算机网络第八版——第一章课后题答案(超详细)

第一章 该答案为博主在网络上整理,排版不易,希望大家多多点赞支持。后续将会持续更新(可以给博主点个关注~ 【1-01】计算机网络可以向用户提供哪些服务? 解答:这道题没有现成的标准答案,因为可以从不同的…

操作系统——15.FCFS、SJF、HRRN调度算法

这节我们来看一下进程调度的FCFS、SJF、HRRN调度算法 目录 1.概述 2.先来先服务算法(FCFS,First Come First Serve) 3.短作业优先算法(SJF,Shortest Job First) 4.高响应比优先算法(HRRN&…

Jackson CVE-2018-5968 反序列化漏洞

0x00 前言 同CVE-2017-15095一样,是CVE-2017-7525黑名单绕过的漏洞,主要还是看一下绕过的调用链利用方式。 可以先看: Jackson 反序列化漏洞原理 或者直接看总结也可以: Jackson总结 影响版本:至2.8.11和2.9.x至…

【数据结构】AVL平衡二叉树底层原理以及二叉树的演进之多叉树

1.AVL平衡二叉树底层原理 背景 二叉查找树左右子树极度不平衡,退化成为链表时候,相当于全表扫描,时间复杂度就变为了O(n) 插入速度没影响,但是查询速度变慢,比单链表都慢,每次都要判断左右子树是否为空 需…

java Spring JdbcTemplate配合mysql实现数据批量修改

其实这个操作和批量添加挺像的 调的同一个方法 首先 我们看数据库结构 这是我本地的 mysql 里面有一个test数据库 里面有一张user_list表 然后创建一个java项目 然后 引入对应的JAR包 在src下创建 dao 目录 在下面创建一个接口 叫 BookDao 参考代码如下 package dao;impo…

进程控制~

进程控制 (创建、终止,等待,程序替换) 进程创建: pid_t fork();父子进程,数据独有,代码共享,各有各的地址 pit_t vfork();父进程阻塞,直到子进程exit退出或者程序替换之…

电力系统稳定性的定义与分类

1电力系统稳定性的定义与分类 IEEE给出电力系统稳定性定义:电力系统稳定性是指电力系统这样的一种能力—对于给定的初始运行状态,经历物理扰动后,系统能够重新获得运行平衡点的状态,同时绝大多数系统变量有界,因此整个…

自己写一个简单的IOC

什么是SpringIOC? 答:IOC即控制反转,就是我们不在手动的去new一个对象,而是将创建对象的权力交给Spring去管理,我们想要一个User类型的对象,就只需要定义一个User类型的变量user1,然后让Spring去…

蓝桥杯-刷题统计

蓝桥杯-刷题统计1、问题描述2、解题思路3、代码实现3.1 方案一:累加方法(超时)3.2 方案二1、问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数…

KNN学习报告

原理 KNN算法就是在其表征空间中,求K个最邻近的点。根据已知的这几个点对其进行分类。如果其特征参数只有一个,那么就是一维空间。如果其特征参数只有两个,那么就是二维空间。如果其特征参数只有三个,那么就是三维空间。如果其特征…

软件设计师教程(七)计算机系统知识-操作系统知识

软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…

Redis十大类型——Hash常见操作

Redis十大类型——Hash常见操作命令操作简列存放及获取获取健值对长度元素查找列出健值对对数字进行操作赋值hsetnx很明显咯它也是以健值对方式存在的,只不过value也就是值,在这里也变成了一组简直对。 🍊个🌰: 想必多…

【Linux】P3 用户与用户组

用户与用户组root 超级管理员设置超级管理员密码切换到超级管理员sudo 临时使用超级权限用户与用户组用户组管理用户管理getentroot 超级管理员 设置超级管理员密码 登陆后不会自动开启 root 访问权限,需要首先执行如下步骤设定 root 超级管理员密码 1、解除 roo…

【C++】string的使用及其模拟实现

文章目录1. STL的介绍1.1 STL的六大组件1.2 STL的版本1.3 STL的缺陷2. string的使用2.1 为什么要学习string类?2.2 常见构造2.3 Iterator迭代器2.4 Capacity2.5 Modifiers2.6 String operations3. string的模拟实现3.1 构造函数3.2 拷贝构造函数3.3 赋值运算符重载和…

DevOps实战50讲-(2)Jenkins配置

1. Docker镜像方式安装拉取Jenkins镜像docker pull jenkins/jenkins编写docker-compose.ymlversion: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/首次启动会因为数据…

iis之web服务器搭建、部署(详细)~千锋

目录 Web服务器 部署web服务器 实验一 发布一个静态网站 实验二 一台服务器同时发布多个web站点 网站类型 Web服务器 也叫网页服务或HTTP服务器web服务器使用的协议是HTTPHTTP协议端口号:TCP 80、HTTPS协议端口号:TCP 443Web服务器发布软件&…

【备战面试】每日10道面试题打卡-Day4

本篇总结的是Java集合知识相关的面试题,后续也会更新其他相关内容 文章目录1、HashMap在JDK1.7和JDK1.8中有哪些不同?2、HashMap 的长度为什么是2的幂次方?3、HashMap的扩容操作是怎么实现的?4、HashMap是怎么解决哈希冲突的&…