Skip to main content

1.2 简单数据类型

1. 整型

  • 整型就是我们常见的自然数,比如-1, -100, 0, 3, 1000, 10000000
  • 范围:范围取决于是多少位的机器,我们后续再来学习,一般应用中不会遇到范围的问题,但是需要考虑到(我们称之为edge case)
  • python 关键字 是 int

1.1 整型支持的运算类型

  • 当我们说运算符的时候,我们指的是一个数值和另一个数值想操作得到的结果,比如 3+2中的操作符+号就是对数值3和数值2进行加法操作的运算符,还有很多其他运算符

1.1.1 基本数学运算符

  • 两个整数通过基本运算符得到的结果是一个数(可能是整数,可能是带小数的数,可能会报错)
  • 加法运算:+
    • 比如: print(3+2),我们将得到5
  • 减法运算:*
    • 比如: print(3*2), 我们得到6
  • 除法运算: /
    • 比如:print(3 / 2), 我们得到1.5,(注意这里除法运算得到的结果是浮点数(带小数点),可以参考下节)
    • print(1/0), 会报错:
          >>> print(1/0)
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ZeroDivisionError: division by zero
  • 整除运算://
    • 比如print(3 // 2), 我们得到1, (这里得到的就是纯整数)
  • 取余运算:%
    • 比如print(10 % 3), 我们得到1
  • 幂运算:**, 就是我们数学上常见的多少次方
    • 比如 print(2**10), 我们得到1024

1.1.2 比较运算符

  • 比较运算符就是希望知道两个整数之间的关系,或者说大小,
  • 两个整数通过比较运算符得到的结果是一个布尔类型的值,只可能是True或者False,参见第三小节
  • ==: 判断两个整数是否相等
    • 比如:print(3 == 3), 得到True (注意我们在上一章学习了赋值操作:=,是一个等于号,这里判断是否相等是两个等于号,初学者容易弄混)
    • print(3 == 4), 得到 False
  • !=: 判断两个整数是否不相等
    • 比如: print(3 != 3), 得到False
    • print(3 != 4), 得到 True
  • A > B: 判断A是不是大于B
    • 比如: print(3 > 3), 得到False
    • print(4 > 3), 得到 True
  • A < B: 判断A是不是小于B
    • 比如: print(3 < 3), 得到False
    • print(3 < 4), 得到 True
  • A >= B: 判断A是不是大于或等于B
    • 比如: print(3 >= 3), 得到True
    • print(3 >= 4), 得到 False
  • A <= B: 判断A是不是小于或等于B
    • 比如: print(3 <= 3), 得到True
    • print(4 <= 3), 得到 False

1.1.3 位运算

  • 位运算理解起来比较难,包子哥后续单独写一个教程关于位运算,位运算在工作中使用的比较少,但是在面试或折竞赛中还是会出现的,大家需要注意

2. 浮点型

  • 浮点数可以理解为我们常用的小数,比如3.1415926, -2.3, 0.1等
  • python 关键字 是 float

2.1 创建浮点数

x = 3.14 # 正浮点数 y = -2.5 # 负浮点数

2.2 浮点数支持的运算类型

  • 和前一小节整型的运算类型非常相似,但会略有不同,其中 浮点数的整除 //, 取余%, 幂次方运算** 等运算几乎不用,我们不做介绍

2.2.1 基本数学运算符

  • 两个浮点数通过基本运算符得到的结果是一个浮点数(也可能会报错)
  • 加法运算:+
    • 比如: print(3.1 + 2.3),我们将得到5.4
  • 减法运算:*
    • 比如: print(1.5 * 1.5), 我们得到2.25
  • 除法运算: /
    • 比如:print(3.0 / 2.0), 我们得到1.5,
    • print(3.3/0.0), 会报错:
          >>> print(3.3/0.0)
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ZeroDivisionError: float division by zero
  • 整除运算:// (很少用)
    • 比如print(3.3 // 2.2), 我们得到1.0, (这里得到的就是浮点数的整数部分,但是结果仍旧是带小数0的)
  • 取余运算:% (很少用)
  • 幂运算:**, (很少用)

2.2.2 比较运算符

  • 浮点数的比较运算和整数类似,我们不做冗余介绍

2.3 浮点数的表示方式

  • 浮点数有多种表示方式
    • 小数,比如 3.14, 2.69098
    • 科学技术法, 比如: 314e-2, 314e-3

3. 布尔型(Boolean)

  • 布尔型数值,可以简单理解为 对 或者 错

    • 对,就用 True 表示, 比如问: 32 是否 大于 23, 在python中就可以用 32 > 23, 因为他正确,所以这个表达式返回的结果就是 True
    • 错,就用 False 表示, 比如问:11 是否 小于 9, 即 11 < 9, 这个表述错误,所以返回False
  • python的关键字是 bool

4. 字符串

  • 我们在上一章已经学习了简单的字符串定义,现在我们来学习更多的关于字符串的知识,以供后续项目使用
  • python 关键字 是 str

4.1 字符串定位

  • 现在我有一个字符串域名,如何获取某一个元素在字符串中的位置呢?
  • 比如我对于字符串域名 "wiki.chengxuyuancd.com",我希望获取 w在字符串中的位置
  • 在python中可以使用 "wiki.chengxuyuancd.com".index("w"),得到的结果是0
    • 注意到这里w在第一位,但是返回的是0(Python中,或者说大多数的语言,下标都是从0开始的)
  • 刚才我们尝试了单个的字符w,那如果我希望知道chengxuyuan这个字符串在上面域名中的位置行不行呢?行
    • "wiki.chengxuyuancd.com".index("chengxuyuan")会返回5(因为从0开始计算对吧)
  • 那如果我想找的元素不在这个字符串怎么办呀,比如我想找个问号
    • "wiki.chengxuyuancd.com".index("?"),此时会返回-1
  • 如果有多个字符都出现在了域名里面,我想跳过第一个,怎么办呢,比如我想跳过第一个.,找到第二个.的位置
    • 可以使用 "wiki.chengxuyuancd.com".index(".", 5) 会返回18, 而不是4, 第一个.在第4个位置,我们从第5个元素开始计算.的位置,所以得到18

4.2 字符串切片

  • 现在我有一个字符串域名,如何获取字符串域名中的后缀呢?

  • Python中有一种方式称为字符串切片,就是把字符串想象成一个一个的珠子串在一起的

  • 现在先说一下公式: 字符串[头下标:尾下标],使用一个字符串s = abcdefghijklmnokqrstuvwxyza-z练习一下:

    • 其中头下标的值可以:(举例子的时候我们固定尾下标不写,表示到末尾)
      • 不写:表示从头开始,s[:]就表示从头到尾,即 abcdefghijklmnokqrstuvwxyz
      • 0或者正整数:表示从第 头下标 个位置开始, s[2:], 从第二个元素c开始(注意从0开始数)到末尾,即cdefghijklmnokqrstuvwxyz
      • 负数,表示从 后往前数多少个字符开始,比如-2就是从倒数第二个字符开始数(不是倒数第三个), 比如s[-2:]表示从倒数第二个字符y开始到末尾,即yz
    • 尾下标的值可以是:(举例子的时候我们固定头下标不写,表示从头开始)
      • 不写:表示到末尾,s[:]就表示从头到尾,即 abcdefghijklmnokqrstuvwxyz
      • 0或者正整数:表示到第 尾下标 结束,比如s[:2]表示头开始到第二个下标的元素结束,第二个下标的元素是c(但尾下标不包含),即ab
      • 负数,表示从 后往前数多少个字符,到这里结束,比如s[:-2],表示从头开始到-2这个元素y结束(y不包含),即abcdefghijklmnokqrstuvwx
    • 注意,头下标是比区间,尾下标是开区间(即不包含尾下标上的元素,如果不写则到末尾)
  • 比如对于字符串域名 s = "wiki.chengxuyuancd.com"

    • 获取字符串的前四位,即 s[:4]
    • 获得域名的顶级域名,顶级域名一般是com或者cn或者org这类的,前面一定是.,所以我们从后往前数第一个.,即rindex, 然后得到s[s.rindex(".")+1:], 即 com

4.3 字符串运算符

操作符描述实例
+字符串连接'Hello' + 'World' 输出为 HelloWorld
*重复输出字符串'ha'*3 输出为 hahaha
[]通过索引获取字符串中字符比如"hahahaha"[1]输出 a(下标同样从0开始)
[:]截取字符串中的一部分,遵循左闭右开原则,s[0:2] 是不包含第 3 个字符的。见上面的第2小节
in如果字符串中包含给定的字符返回 True"wiki" in "wiki.chengxuyuancd.com" 返回True
not in如果字符串中不包含给定的字符返回 True"wiki" not in "wiki.chengxuyuancd.com" 返回False