非程序猿上手python系列-正式上车(三)

本文全面介绍了Python编程的基础知识,包括语句与表达式、变量、赋值运算、关键字、数据类型如字符串、数字、列表和字典,以及代码注释、打印函数、条件判断、遍历循环、函数和类的基本概念。通过丰富的示例代码,帮助初学者快速掌握Python编程的核心技能。


python既然是一门语言,自然就有语法。既然有语法就会有规定和规范。
规定:必须这样做
规范:推荐你这样做,但是不这样做也行
无论处于什么原因,我都认为你应该把规范当成规定。既能够减轻记忆负担,也能写出相对比较好的代码。所以,本教程将不会严格的区分规定和规范。

概念

关于概念,具体内容可以不去背,但是得知道这么个东西。提到得时候回忆,如果回忆不起来,再来翻阅即可。所以记得收藏/点赞我的文章哈~

一、语句和表达式

语句: 程序执行的最小单元
表达式:可以运算出结果的语句
举个栗子

x = 1 + 1
# 1+1 我们称为表达式(因为执行后能运算出结果2)
# 这行代码,我们叫语句

二、变量

变量的概念和数学中的未知数是一个意思
程序运行本质是数据操作,那我们需要用一个代号来描述这个数据

a = 1
b = 2
a = b + 1
# 上面, a,b 就是叫做变量
# 变量的值是可以改变的

变量名是我们自定义的,但是要满足一定的规定:

  1. 只能包含字母,数字,下划线; 如:file_name
  2. 字母区分大小写,如:aA 是两个不同的变量
  3. 不能以数字开头, 如 2name 是不合法的
    为了方便阅读,我们一般会用英文单词给变量命名,多个单词以下划线相隔
    如:file_name="这是一个文件名"

ps: 如果你不习惯用英文单词,那么可以用拼音。但是,千万不要用拼音缩写。
比如:

xiao_ming_de_ming_zi = "小明"
# 如果你这样写:
xmdmz = "小明"
# 我保证你过10分钟后再回来看你会不知道写的是什么玩意

如果不小心被你发现,中文也可以做变量的名称

= 500
中国 = 20
print(+中国) # 520

那你一定一定要记得:
在这里插入图片描述

三、赋值运算

x = 0
# 凡是有一个“=” 的地方我们称之为赋值运算
# 等号的左边是变量
# 等号的右边是表达式  

四、关键字(保留字)

关键字:python解释器占用了一些特殊的名字拼写,并赋予了一些特殊功能。有些关键字你可以改写他的行为,但是不推荐这样做。好比“爸爸”这个词,用于对父亲的称呼。但是你非要叫我爸爸,也不是不行,但是不推荐。
列表:

False','None', 'True','and','as', 'assert','break',
 'class','continue', 'def','del','elif', 'else','except',
'finally', 'for', 'from','global','if','import','in','is',
'lambda', 'nonlocal','not','or','pass','raise', 'return',
'try','while','with','yield'

不用背,以后都会熟悉的。知道什么叫关键字即可

运行程序

运行的原理

运行代码就是解释器解释代码的过程。
其实运行的过程就和你看作文是一样的,程序也是从上往下,从左往右运行的。

如何运行

从现在开始,你需要一边和我一起写代码,一边运行测试结果了。所以先说下如何运行代码

  1. 方案1:交互式解释器
    在cmd或者终端中输入python3
    在这里插入图片描述
    进入到这个界面后就可以写代码了

    在这里插入图片描述
    优点:方便,不需要额外安装(安装python后就能运行)
    缺点:没有代码提示,不能保存密码

  2. 方案2 : 使用ipython
    需要安装,和方案1差不多,但是有代码提示。
    安装和使用教程,自行搜索,关键字: windows(或别的操作系统) ipython3 安装

  3. 方案3: 在线编辑器
    这个网上有很多,搜索关键字: python 在线运行
    如:https://c.runoob.com/compile/9

  4. 使用vscode

    1. 创建一个文件夹( 文件夹路径最好不要有中文)
    2. 打开vscode, 并打开对应的文件夹
      在这里插入图片描述
    3. 创建python文件(后缀名为py)
      在这里插入图片描述
      只要后缀名正确即可,名字可任意取。
      4.编辑代码并保存文件,点击下方图片2区或者使用快捷键ctrl+反引号 呼出终端窗口
      在这里插入图片描述
      5. 输入python 文件名.py 回车即可, 30为程序输入内容
      在这里插入图片描述

推荐方案3或方案4

数据类型

上面提到过,写代码本质就是进行数据操作,数据类型就是对数据的一种分类。
python 只能识别并处理有限的数据类型。(我不会讲完)

字符串 string

凡是用双引号或者单引号扩起来的文本,都叫字符串

"这是个字符串"
'这也是个字符串'

只需要注意一点:双引号和单引号都是英文输入法下的符号
其实代码里所有用到的标点符号都应该是英文输入法下的,否则程序会报错
(如果字符串中的例外,如: "这里可以用中文的符号:,。“,但不能放到引号外 "

数字类型 int/float

数字类型分有两种 int 类型和 float
int 类型叫做整形,也就是整数的意思,如:0
float 类型叫做浮点类型,其实就是小数,如:1.1
我只需要你记住:

  1. 能用int 的时候就不要用float
  2. float 计算是不精确的
# 运行下面代码
print(0.1+0.2)

结果是 :0.30000000000000004

列表

string/int/float 是最基础的3种类型,已经能做很多事情了。我们先看一个列子,用程序描述
小明,小王,小丽,他们的年龄分别是:18,20,22

xiaoming = "小明"
xiaowang = "小王"
xiaoli = "小丽"
xiaoming_age = 18
xiaowang_age = 20
xiaoli_age = 22

代码中用到的概念:变量,string,int
你会发现,这样描述会比较繁琐。如果有20个人,那你是不是要写20行代码?
所以,我们其实可以对数据进行分组归类。这就是列表的意义。
列表的特点:

  1. 是数据的有序集合
  2. []包围

同样的题目,我们用列表代码来描述

names = ["小明", "小王", "小丽"]
ages = [18, 20, 22] 

是不是比较好了呢?

字典

我们再重新看上面的题目,即使我们用了列表来描述。还是觉得缺少了点东西。年龄和名字分开了,唯一的联系是他们在列表中的位置。总觉得不安全,万一我写错顺序了呢?所以,就诞生了字典这种数据类型。
我们直接上代码

person = {
	"小明": 18,
	"小王": 20,
	"小丽": 22,
}

总结下字典的特点:

  1. {} 扩起来
  2. 每个元素用 :分为两部分,我们称: 左边的部分为键(key),右边成为值(value)。
  3. 元素之间用,分隔
    其他代码没有提现的特点:
  4. 键只能是字符串(这说法不准确,但是你可以这样认为)
  5. 值可以是任意数据类型(甚至是字典本身)

其他数据类型

布尔类型(bool)

  • 布尔类型只有两个值:True, False
  • 就是真和假的意思,在做判断的时候会用到

空值类型

  • 空值类型代表什么都没有,是个特殊的数据类型
  • 空值的值为None

还有其他类型我们遇到了再说,数据类型就讲到这。如何使用这些数据类型的问题,后面会结合例子来讲解。

代码注释

注释是写给人看的,当解释器遇到注释,会忽略注释内容
#号后面的内容均为注释,可以单独一行,也能写在代码的后面

# 这是注释
a = 10  # 这里也是注释

print

print 是一个系统内置的函数,函数是什么后面会讲
功能:打印内容到终端(如果你使用的是交互式解释器,会自动帮你打印运行的结果)

练习1 print函数的应用
创建 test_1.py 文件

# test1.py
a = 10 
b = 20
c = a + b
# 保存文件,运行一次代码,再继续往下写
print(c)

第一次执行结果:
在这里插入图片描述
第二次执行结果:
在这里插入图片描述
可以看到,只有调用print 函数后,终端上才会现实结果:30
如果不调用print 函数,我们没法知道程序是否运行了,结果是不是符合预期的
后面的练习会大量的使用该函数,所以提前说明

条件判断

条件判断是程序的魅力所在。正因为有条件判断,程序才有了多种可能。
在python中,条件判断有固定的语法。也叫if 语句
结构:
在这里插入图片描述
再次强调下,程序是从上往下,从左往右运行。不会错过任何一个符号,包括空格。
语法规定,if 语句的下面,至少有一行是以4个空格开头的。标志着if语句的作用域。
知识点:

  1. if 语句不一定要有else
  2. else 是和 if 搭配使用的关键字,含义是否则。
    整个代码的含义是:
    如果 a 的值是10,那么打印 “条件为真” 否则 打印 “条件为假”
  3. 判断语句的执行结果为bool类型的值(真True/假False
  4. 运算符
符号含义
==等于
!=不等于
>大于
>=大于等于
<小于
<=小于等于
+
-
*
/
%求余

更详细的说明参考:https://www.runoob.com/python/python-operators.html
需要注意的是=== 的区别。
== 用于比较左右两边的值是否相等
= 用于赋值,也就是将等号右边的值赋给左边的变量

练习2 条件语句
新建test_2.py文件 (先照着写代码,不要复制。想一想程序运行的结果是什么,再运行程序校验结果)

a = 10
if a == 10:
    print("a等于10")
else:
    print("a不等于10")

b = 20
if b > 10:
    print("b 大于 10")
print("想一想,这句会打印吗, 为什么")

运行结果

a等于10
b 大于 10
想一想,这句会打印吗, 为什么

遍历(for…in…语句)

前面我们了解了列表这样的数据结构,知道列表是一堆数据的集合。那么,我们又怎么取出来呢?
栗子1

array = [1,2,3,4,5] # 这里定义了一个名字为array的变量,并将列表[1,2,3,4,5]赋值给array
print(array[0]) 
print(array[1])
print(array[2])
print(array[3])
print(array[4])
# 运行结果
# 1
# 2
# 3
# 4
# 5

上面的代码可以看到,我们通过array[0] 取出了列表中的第一个值 1
[] 里面的数字我们又叫做索引,代表列表中的位置。程序猿数数字是从0开始的,所以第一个数字的索引是0

写到这,聪明的童鞋可能就会说了,我们用列表定义一堆数字是简单了, 取值如此麻烦。那我还不如一开始就用多个变量来赋值呢。

别着急,这就是遍历存在的意义了。所谓遍历实际就是数数。
我们现在就用for…in… 语句改造栗子1
栗子2:

array = [1,2,3,4,5]
for item in array:  # 从array中一个个的取出里面的元素
    print(item)     # 每取出一个元素的时候,就会执行一次`print(item)`

栗子2和栗子1运行的结果是一样的。
注意,第三行代码又是以4个空格开头哦。想一想,为什么?

for .. in .. 语句除了能够遍历列表,还能够遍历字典(假设你还记得字典是什么)

person = {
    "小明": 18,
    "小王": 20,
    "小丽": 22,
}
for key in person:     # 从字典中一个个的取出key
	print(key)         # 每取出一个key,就会打印一次key
	print(person[key]) # 每取出一个key,就会打印一次value, 字典的取值方式和列表很像,但是[]里面是key,不是数字 

运行结果

小明
18
小王
20
小丽
22

练习3 for…in… 语句

# test3.py
num = 0
for item in [1,2,3,4,5]:
    num = num + item
print(num)

运行结果:(老规矩,先想,后执行,再校验)

15

循环 while

循环顾名思义就是重复执行的意思。和遍历很像,但使用的场景不同。
栗子1

a = 0
while a < 10:  # while是循环的关键字, 紧跟着的是循环条件, 如果循环条件为真,则会执行循环体内的代码
    a = a + 2  
    print(a)
print("循环结束")

执行结果:

2
4
6
8
10
循环结束

思考题

  • 代码注释中提到的循环体指代的是哪几行代码?解释器如何识别循环体的?

写循环代码的时候,一定要有终止条件。
栗子1的代码中,循环条件为: a<10 ,每循环一次,a 的值都会加2,那么总会有a >=10 的时候。
a>=10 就会退出循环, 这就是终止条件。
如果你不小心,漏了,或者判断的条件失误,那么代码就会一直执行下去。我们称之为死循环。
死循环有可能会造成计算器卡死, 趁着没彻底卡死之前,你可以通过ctrl+c 来强行终止代码运行
或者直接关闭终端。

我们还可以通过break 语句终止循环

a = 1
while True:
    print("第", a, "次循环开始")  # print 可以接收多个参数,用逗号分隔
    a += 1  # 等价 a = a + 1
    if a > 5:
        break  # 跳出循环
        print("第%d次循环结束" % a - 1)  # 这里有个格式化字符串的知识点,详情参考:https://www.jianshu.com/p/9f1068f495bd
print("循环结束")

运行结果:

1 次循环开始
第 2 次循环开始
第 3 次循环开始
第 4 次循环开始
第 5 次循环开始
循环结束

break 语句还可以跳出for..in 语句,但是很少这样用。

函数

如果说,列表和字典是数据的集合。那么函数就是代码的集合。
一般函数是以功能为单位对代码进行封装。
函数是写代码的精髓,你掌握了函数,就可以说就掌握了代码的半壁江山。

随手编个奇葩的题目:
给定一个人名列表,如:["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
遍历每一个人的名字,如果是王老师, 你就要打印三句话:

  1. 老师早上好
  2. 老师中午好
  3. 老师下午好

用我们上面的讲到的内容,你也许会写出下面的代码

person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
    if item == "王老师":
        print("老师早上好")
        print("老师中午好")
        print("老师下午好")

这时候,张老师不服了, 和你说,不行,凭什么王老师你就打印,我就不打印了?
于是你又开始改造你的代码

person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
    if item == "王老师":
        print("老师早上好")
        print("老师中午好")
        print("老师下午好")
    if item == "张老师":
        print("老师早上好")
        print("老师中午好")
        print("老师下午好")

那如果还有李老师,诸葛老师。。。你会不会觉得,他们真烦。
这时候函数跳出来和你说了: 不要写重复的代码!

def greet():
    print("老师早上好")
    print("老师中午好")
    print("老师下午好")

person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
    if item == "王老师":
        greet()
    if item == "张老师":
        greet()

总结:

  1. def 函数关键字,用于定义一个函数
  2. greet 自定义函数名, 本质也是个变量。后面的(): 固定写法
  3. 函数体 :紧跟着函数定义的下一行,且以4个空格开头
  4. greet() 函数调用(最后一行和倒数第三行), 我们通过函数名() 的方式调用函数,也就代表了执行函数体中的代码

注意,当解释器遇到def定义函数的时候,并不会去执行函数体中的内容,而是等到函数调用的时候才执行。

这时候,有的童鞋又问了, 函数就只有这点作用吗?答案是No!
张老师还是不满意,这不行啊,你只叫老师好,谁知道你心里想着哪个老师?
所以你要说x老师

于是又要改代码了

def greet(name):
    print("%s早上好" % name)
    print("%s中午好" % name)
    print("%s下午好" % name)


person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
    if item == "王老师" or item == "张老师":  # 这里用or连接了两个判断语句, 意思是“或”, 即满足任一条件即为真
        greet(item)

到这,我们又引入了一个概念,函数参数。 函数参数又分为实参和形参。
实参:函数调用时候传入得参数。 代码greet(item) 括号里的item 就是实参
形参:函数定义时候,占位置用的参数。 代码def greet(name): 括号中的name 就称为形参。形参的值,由调用函数的时候传入的实参来决定。

函数还有一个重要的知识点:函数返回值
函数调用语句也是一个表达式,也就是能够计算出结果的。

def get_name():
    return "王老师"
name = get_name()
print(name)

运行结果

王老师

函数返回值通过return定义, 如果没有定义,则默认返回None , 代表什么都没有。

def get_name()
    pass  # pass 是空语句,什么都不执行,起到占位置,保持结构完整的作用
name = get_name()
print(name)

运行结果

None

可能废话有点多, 我只需要你记住函数的四个要素 : 函数名,函数调用,参数,返回值

练习4 函数
用函数实现,计算给定两个参数的和并返回。

def sum(a,b):
    return a + b 
print(sum(1, 1))
print(sum(10,1))

运行结果

2
11

类 (不需要掌握)

类虽然很好用,也很重要。但对非开发人员来说,并不是非掌握不可。
我本来计划这次教程中不会讲类,但是想到,不写不代表不会用到。所以大概讲一讲。就当作一个课外读物。

类是比函数更高级的封装。
如果说函数是代码的集合,那么类就是函数和变量的集合。

# 这里定义了一个类
class Dog:  # class 关键字, Dog 自定义类名
    sex = "公"

    def __init__(self, color):
        self.color = color

    def describe(self):
        print("这是一只%s颜色的狗" % self.color)

# 下面是类的使用

# 类的实例化, 和函数调用很像。 有的类不一定需要传入参数,看怎么定义的
dog = Dog("黑色")
# 类里面的函数,叫做方法。 实例化后可以调用
dog.describe()
# 类里面变量的值,叫做属性
print(dog.sex)

我们重点放在类的使用上, 大部分时候我们并不需要自己实现一个类。能够做到使用别人写好的类,就足够用了。

讲类只是为了让你以后看到 dog.sex 这种点来点去的东西不要太惊讶。

包和模块

讲包和模块主要是为了让你理解,如何使用别人的代码。
我们写代码很少像练习这样几乎从头开始写。我们要做的是资源整合。

模块: 就是一个python文件(以.py结尾的文件)。
包: 一个包含多个模块的文件夹

使用别人的代码并不是说让你复制粘贴,而是通过引入的方式。直接调用别人的函数或者类。

栗子:
练习4中, 我们定义了一个函数sum
在相同目录下,我们新建一个test_5.py

import test_4   # 使用 import 语句导入一个模块

print("开始")
print(test_4.sum(10, 20))  # 模块名.函数名() 的方式可以直接调用模块中的方法
print("结束")  

运行结果:

2
11
开始
30
结束

咦。 2,11 从哪里来的呢?
放心,不是我粘贴错了。
我们重新看下test_4.py的代码

def sum(a, b):
    return a + b
    
print(sum(1, 1))
print(sum(10, 1))

原来在这里,而且我们还能发现,2,11 是在打印“开始”之前就输入了
所以可以推断:import 的本质就是把外部的代码执行了一遍。

结语

是的,python 入门已经讲完了。
除去一些废话,实际讲的干货并不多。
你可能会怀疑,就这些,算入门了吗?
我可以负责任的告诉你,上面的内容足够你解决50%以上的问题。

如何应用就看你掌握的程度了,编程不是厚积薄发。边学边用,你就会越来越熟练。
虽然入门已经结束,但是本系列还会继续更新。接下来将以一个一个具体案例为主。

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值