本文利用的是Python 3.x版本,建议学习3.x版本

Python中的基本数据类型、运算、变量

1. 基本数据类型

1.1 整数

py可以处理任意大小的整数,例如123123456789132456,任意大小,而像CJava等这种语言对整数大小是有要求的,换句话说就是大小是确定的,例如C中的int一般是4个字节,范围是-2147483648~+2147483647,至于为什么py可以这样,因为py内部会根据数的大小进行调整空间,让空间可以存储的下这个数据,因此没有人会说pyint4个字节(实际上比4大很多)。

print(type(3))
#会输出数据类型int

1.2 浮点数

其实就可以理解浮点数是实数,浮点数在计算机内部是以科学记数法表示的,要记住的就是浮点数的运算是有误差的,而整数的运算是永远精确的!!例如,你可以运行以下代码,看看结果是不是和你想的一样

print(1.5-1.4)

可能会出现下图的结果,这就是因为浮点数不是精确的

1.3 字符串

"'括起来的字符,就是字符串,如果字符串内部有',则可以用"括起来还可以用转义符号反斜杠,以下是实例

print('hello')
print("hello")
print("I'am ")
print('\'')
print("'\"")
# \n是换行,如果\n在字符串里不方便阅读,还可以写成如下形式
print('''line1
line2
line3''')
# 等价于
print('line1\nline2\nline3')
# print函数默认会输出后换行,关于print的具体用法之后再说

1.4 布尔值

布尔值是TrueFalse,要么为真要么为假,例如(10<5)这个式子是不正确的,则这个式子的布尔值是False。一般布尔值和布尔运算用在判断表达式中

and,or,not 是三个布尔运算的操作符。True and False的结果为False,就是说用and运算的布尔值,只要有一个是False,则结果为False,必须全为True,才能为TrueTrue or False的结果为True,用or运算的布尔值只要有一个为True,则结果为True,全为False时结果才是Falsenot False的结果是Truenot用来取反。例如以下代码

print(True or False)
print(True and False)
print(not True)

以下是布尔运算真值表,包含了上面描述的情况(来自MIT)。

1.5 空值

空值是py里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

总结

以上是py的基本数据类型,此外py还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,以后会涉及到。

2. 表达式运算

有了数据以后,我们还得对数据进行运算以得到我们想要的结果。数据对象和操作符结合后,组成了表达式,一个简单的表达式为2 + 3两个操作数,一个操作符。以下是基本的数的运算操作符

1 + 2 #和
1 - 2 #差
1 * 2 #积
#以上的结果都是int,如果其中有一个数为float,则结果为float
1 / 2 #商,结果是float
3 % 2 #模运算,也就是求余数
5 // 2 #整除运算,结果是2
2**3 #乘法运算,结果是8

以下是测试图片

3. 变量

3.1 什么是变量

变量基本和代数中变量是一个意思,例如我们在方程中最常用的x。只不过在计算机中变量可以代表各种各样的数据类型。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头。在编程语言中,等号=不再是数学上相等的概念了,而是赋值的意思,也可以说是分配值,例如以下代码

pi = 3.14159

左边的pi代表变量,右边的3.14159代表值,将值利用=赋予给变量pi,这就是以上代码的含义。值储存在计算机的内存中,可以看成是将这个值和一个名字进行了绑定,当我们需要使用这个值的时候,只需使用pi即可。就像我们每个人都有名字一样,一个名字对应了一个人(不考虑重名)。

为什么要给值一个名字呢,为了我们使用方便,例如

pi = 3.14159
r = 2.2
area = pi*(r**2)
##计算圆的面积

不用每次都使用3.14159,而且顾名思义,变量是会发生变化的,在程序运行中途可能发生变化,我们无法提前预知,所以这个时候更加展现出了变量的作用。我们看以下代码

x = 5
x = x + 1
print(x)
#结果为6

如果按照数学上的理解x=x+1是不成立,但是在计算机中=是赋值号,所以这个式子的意思是将x+1的值赋予给xx+1的值是6,所以最后将6赋予给x,所以x最终的结果为6

3.2 改变变量的值

我们可以重新绑定变量和值,使用一个赋值式子即可,例如

x = 6
print(x)
x = 5
print(x)
#输出为6和5

现在x5绑定在了一起,6这个值依然存储在计算机的内存中,但是可能没有变量和其绑定,所以我们再也不能使用这值了,就算我们新分配一个6x,这个6也不是之前的6了。所以可以说之前这个6是一个废值,py内部会有垃圾回收机制,检测到这个值是垃圾后,会回收这块空间供之后分配的值使用。我画了以下的图便于理解。

我们也可以将x绑定为其他数据类型,例如

x = 5
x = True

如果读者会类似于CJava(静态语言)的语言的话,会觉得如上的写法不可思议,会报错,但是在py这就可以使用,因为x仅仅是一个名字,和哪个值绑定完全取决于我们,但是不建议这样更改绑定的数据类型,最好从始至终让变量保持一种数据类型。
例如两个人合作写代码,第一个人开始将x作为int使用,后来当作字符串使用,第二个人在阅读第一个人写的代码时,稍有不慎就会将x的数据类型搞错,从而带来不必要的麻烦。

最后

以上只是快速理解和学习的入门级知识,不涉及深入的理解,例如动态语言、对象、引用等概念,可以自己搜索了解。不过建议学习时,首先有一个总体的把握,首先理解这是个什么东西,等大致都清楚后,再深究细节,这样的学习方法我认为比较好。不然一上来就深究细节,对于已经入门的同学来说倒没什么,要是还没入门就深究细节,怕是要劝退。

题外话,知识本来就应该反复的学习,温故而知新,一层层的学习。先搞清楚这是什么,怎么来的,有什么用,这样学习起来不会迷茫。国内的教学,例如数学方面,有些不好的地方在于,上来就是公式,定理,而忘了最根本的问题,为什么会有这个公式?这个公式有什么用?(不是做题),例如矩阵的特征值,特征向量,可以用来解决生态系统中的动力方程的问题。这样学起来恐怕就不会那么迷茫了吧~

如果觉得不错,可以分享~可以关注公众号~

1. Python中的基本数据类型、运算、变量的更多相关文章

  1. python中不可变数据类型和可变数据类型

    在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址 ...

  2. Python教程(2.2)——数据类型与变量

    和C/C++.Java一样,Python也有数据类型和变量两个概念. 数据类型 Python中的几个基本数据类型为整数(integer/int).浮点数(float/float).布尔值(boolea ...

  3. python中的常用数据类型

    python中的常用数据类型 以下是个人总结的python中常见的数据类型,话不多说,我们直接步入正题: 数字类型 整型类:int类可以表示任意大小的整数值,在python中没有像JAVA或者C那样的 ...

  4. python中 and 和 or 运算的核心思想 ——— 短路逻辑

    python中 and 和 or 运算的核心思想 --- 短路逻辑 1. 包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 True 呢? 在Pyt ...

  5. [转]关于python中带下划线的变量和函数的意义

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

  6. python中实现三目运算

    python中没有其他语言中的三元表达式,不过有类似的实现方法 如: a = 1 b =2 k = 3 if a>b else 4 上面的代码就是python中实现三目运算的一个小demo, 如 ...

  7. python中的特殊数据类型

    一.python中的特殊数据类型 对于python,一切事物都是对象,对象基于类创建.像是“wangming”,38,[11,12,22]均可以视为对象,并且是根据不同的类生成的对象. 参照:http ...

  8. Python中的基本数据类型之列表与元组初步了解

    一.什么是列表 1.列表是Python中的基本数据类型之一用[]来表示,每一项元素由逗号隔开,列表什么都能装,(能装对象的对象) 2.可以用来存放大量数据 3.是一个可以改变的数据类型 二.列表的索引 ...

  9. python语言学习7——数据类型和变量

    整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...

随机推荐

  1. EF TMD

    TMD 几个月前,本着学习的心态,首次在项目中应用EF.因为这里老是赶.赶.赶,当时只是匆匆而就,浅尝辄止,搞到现在对EF一知半解,每次在新项目使用,都担惊受怕,大费周折,不知道什么时候,在什么地方就 ...

  2. HDFS02

    读取流程 写流程 ============SecondaryNameNode============ Namenode的一个快照 周期性的备份namenode 记录namenode中的metadata ...

  3. Linux gadget驱动分析3------复合设备驱动

    windows上面对usb复合设备的识别需要下面条件. “ 如果设备满足下列要求,则总线驱动程序还会报告 USB\COMPOSITE 的兼容标识符: 设备描述符的设备类字段 (bDeviceClass ...

  4. 解决openresty http客户端不支持https的问题

    OpenResty默认没有提供Http客户端,需要使用第三方提供:当然我们可以通过ngx.location.capture 去方式实现,但它只能发送一个子请求. 第三方基本是以lua-resty-ht ...

  5. openStack Packages yum upgrade

    依赖关系解决 ============================================================================================= ...

  6. http通讯基础

    1 . 一个网页包括 JS  CSS Html 2 . 状态码:200  正常   302  临时重定向 (类似呼叫转移) 304  未修改,客户端缓存的信息是最新的,无需到服务器重新获取 403  ...

  7. Sql批量插入方法

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  8. Unity学习-软件的基本操作(二)

    基本操作 1:Scene中 以小手显示,平移画布,与鼠标中键一样 2:平移 游戏对象,组件的 Position属性 也可设置 3:旋转 游戏对象,组件的 Rotation属性 也可设置 4:缩放 游戏 ...

  9. java定时器和实时查询数据库

    定时器: Timer timer = new Timer();                    timer.schedule(new TimerTask() {                  ...

  10. [ SCOI 2005 ] 最大子矩阵

    \(\\\) \(Description\) 给出一个\(N\times M\)的有权矩阵,选出其中\(K\)个互不重叠的子矩阵,使得这\(K\)个子矩阵的权值和最大. \(N\in [1,100]\ ...