Python-100-Days 第二天 语言元素

项目地址
https://github.com/jackfrued/Python-100-Days
Day01~15 - Python语言基础

Day16~20 - Python语言进阶

Day21~30 - Web前端入门

Day31~35 - 玩转Linux操作系统

Day36~40 - 数据库基础和进阶

Day41~55 - 实战Django

Day56~60 - 实战Flask

Day61~65 - 实战Tornado

Day66~75 - 爬虫开发

Day76~90 - 数据处理和机器学习

Day91~100 - 团队项目开发

指令和程序

计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。我们通常所说的程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。今天我们大多数时候使用的计算机,虽然它们的元器件做工越来越精密,处理能力越来越强大,但究其本质来说仍然属于“冯·诺依曼结构”的计算机。“冯·诺依曼结构”有两个关键点,一是指出要将存储设备与中央处理器分开,二是提出了将数据以二进制方式编码。二进制是一种“逢二进一”的计数法,跟我们人类使用的“逢十进一”的计数法没有实质性的区别,人类因为有十根手指所以使用了十进制(因为在数数时十根手指用完之后就只能进位了,当然凡事都有例外,玛雅人可能是因为长年光着脚的原因把脚趾头也算上了,于是他们使用了二十进制的计数法,在这种计数法的指导下玛雅人的历法就与我们平常使用的历法不一样,而按照玛雅人的历法,2012年是上一个所谓的“太阳纪”的最后一年,而2013年则是新的“太阳纪”的开始,后来这件事情被以讹传讹的方式误传为”2012年是玛雅人预言的世界末日“这种荒诞的说法,今天我们可以大胆的猜测,玛雅文明之所以发展缓慢估计也与使用了二十进制有关)。**对于计算机来说,二进制在物理器件上来说是最容易实现的(高电压表示1,低电压表示0),于是在“冯·诺依曼结构”的计算机都使用了二进制。**虽然我们并不需要每个程序员都能够使用二进制的思维方式来工作,但是了解二进制以及它与我们生活中的十进制之间的转换关系,以及二进制与八进制和十六进制的转换关系还是有必要的。如果你对这一点不熟悉,可以自行使用维基百科或者百度百科科普一下。

说明:近期关于量子计算机的研究已经被推倒了风口浪尖,量子计算机基于量子力学进行运算,使用量子瞬移的方式来传递信息。2018年6月,Intel宣布开发出新款量子芯片并通过了在接近绝对零度环境下的测试;2019年,IBM和Google都推出了自己的量子计算机。

变量和类型

变量

在程序设计中,变量是一种存储数据的载体。计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。计算机能处理的数据有很多种类型,除了数值之外还可以处理文本、图形、音频、视频等各种各样的数据,那么不同的数据就需要定义不同的存储类型。Python中的数据类型很多,而且也允许我们自定义新的数据类型,我们先介绍几种常用的数据类型

Python3 的六个标准数据类型中:

不可变数据类型(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据类型(3 个):List(列表)、Dictionary(字典)、Set(集合)。

以下四种数据类型都属于Number:

整型:Python中可以处理任意大小的整数(Python 2.x中有int和long两种类型的整数,但这种区分对Python来说意义不大,因此在Python 3.x中整数只有int这一种了),而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。
浮点型:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2)。
字符串型:字符串是以单引号或双引号括起来的任意文本,比如’hello’和"hello",字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。
布尔型:布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5会产生布尔值True,而2 == 1会产生布尔值False)。
复数型:形如3+5j,跟数学上的复数表示一样,唯一不同的是虚部的i换成了j。实际上,这个类型并不常用,了解一下就可以了。

内置的 type() 函数可以用来查询变量所指的对象类型。

a = 0
b = 1.2
c = True
d = 3+5j

print(type(a))
print(type(b))
print(type(c))
print(type(d))

<class ‘int’>
<class ‘float’>
<class ‘bool’>
<class ‘complex’>

在这里插入图片描述

变量命名(命名规范)

在Python中,变量命名需要遵循以下这些必须遵守硬性规则强烈建议遵守的非硬性规则

硬性规则:

1.变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
2.大小写敏感(大写的a和小写的A是两个不同的变量)。
3.不要跟关键字(有特殊含义的单词,后面会讲到)和系统保留字(如函数、模块等的名字)冲突。

PEP 8要求:

用小写字母拼写,多个单词用下划线连接。
受保护的实例属性用单个下划线开头。
私有的实例属性用两个下划线开头。

当然,作为一个专业的程序员,给变量(事实上应该是所有的标识符)命名时做到见名知意也是非常重要的。

命名规则可以被视为一种惯例,并无绝对与强制。

使用能够表意的名字是好的编程习惯,会使得代码容易阅读和理解。

在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格

①在Python中,如果变量名需要由 二个或多个单词 组成时,可以按照以下方式命名
每个单词都使用小写字母
单词与单词之间使用 _下划线 连接
例如:first_name、ast_name、qq_number、qq_password

②当变量名是由二个或多个单词组成时,还可以利用驼峰命名法来命名
第一个单词以小写字母开始,后续单词的首字母大写。例如:firstName、lastName或者每一个单词的首字母都采用大写字母。例如:FirstName、LastName

变量的使用

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在Python中定义变量是不需要指定类型(在其他很多高级语言中都需要)。

Python可以根据等号右侧的值,自动推导出变量中存储数据的类型。

在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

等号(=)用来给变量赋值。
等号(=)左边是一个变量名,
等号(=)右边是存储在变量中的值。
变量名 = 值

当一个名字第一次出现在赋值语句的左边部分是,会创建对应的python变量。赋值语句遇见名字与值关联起来。变量存的是指向数据的引用,而不是数据本身。

看下面这个例子:
在这里插入图片描述
赋值语句theSum = 0会创建变量theSum,并且令其保存指向数据对象0的引用

Python会先计算赋值运算符右边的表达式,然后将指向该结果数据对象的引用赋给左边的变量名。

在本例中,由于theSum当前指向的数据是整数类型,因此该变量类型为整型。如果数据的类型发生改变=正如上面的代码给theSum赋值True,那么变量的类型也会变成布尔类型。

赋值语句改变了变量的引用,这体现了Pyhon 的动态特性。同样的变量可以指向许多不同类型的数据。

注:
python属于动态语言,变量不需要先声明,变量实际上存储的是指向的数据对象的引用。

可以使用Python中内置的函数对变量类型进行转换。

int():将一个数值或字符串转换成整数,可以指定进制。
float():将一个字符串转换成浮点数。
str():将指定的对象转换成字符串形式,可以指定编码。
chr():将整数转换成该编码对应的字符串(一个字符)。
ord():将字符串(一个字符)转换成对应的编码(整数)。
例如:

print(ord("A"))
print(ord("a"))
# 65
# 97

运算符

Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。除了我们之前已经用过的赋值运算符和算术运算符,我们稍后会陆续讲到其他运算符的使用。
在这里插入图片描述

练习

练习1:华氏温度转换为摄氏温度。

提示:华氏温度到摄氏温度的转换公式为: C = ( F − 32 ) ÷ 1.8 C=(F - 32) \div 1.8 C=(F32)÷1.8

"""
将华氏温度转换为摄氏温度
"""
f = float(input('请输入华氏温度: '))  # 变量f存储输入的华氏温度数值,转化为浮点数
c = (f - 32) / 1.8   
print('%.1f华氏度 = %.1f摄氏度' % (f, c))   # 格式化输出转化后的摄氏温度

在这里插入图片描述
在使用print函数输出时,也可以对字符串内容进行格式化处理,上面print函数中的字符串%1.f是一个占位符,稍后会由一个float类型的变量值替换掉它。同理,如果字符串中有%d,后面可以用一个int类型的变量值替换掉它,而%s会被字符串的值替换掉。除了这种格式化字符串的方式外,还可以用下面的方式来格式化字符串,其中{f:.1f}和{c:.1f}可以先看成是{f}和{c},表示输出时会用变量f和变量c的值替换掉这两个占位符,后面的:.1f表示这是一个浮点数,小数点后保留1位有效数字。

练习2:输入圆的半径计算计算周长和面积。

"""
输入半径计算圆的周长和面积
"""
radius = float(input('请输入圆的半径: '))
perimeter = 2 * 3.1416 * radius
area = 3.1416 * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)

在这里插入图片描述

练习3:输入年份判断是不是闰年。

普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004、2020年就是闰年);
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);

"""
输入年份 如果是闰年输出True 否则输出False
"""
year = int(input('请输入年份: '))
# 如果代码太长写成一行不便于阅读 可以使用\对代码进行折行
is_leap = year % 4 == 0 and year % 100 != 0 or \
          year % 400 == 0
          # 可以整除4并且不能整除100的年份或者是可以整除400的年份
print(is_leap)

在这里插入图片描述

小结

程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制
变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换
数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符串基本操作 / 字符编码
运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页