数据类型和运算符

一、变量和类型

在程序设计中,变量是一种存储数据的载体。计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。首先介绍几种基础的数据类型:

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

对于每个变量我们需要给它取一个名字,就如同我们每个人都有属于自己的响亮的名字一样。在Python中,变量命名需要遵循以下这些必须遵守硬性规则和强烈建议遵守的非硬性规则。

  • 硬性规则
  • 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
  • 大小写敏感(大写的a和小写的A是两个不同的变量)。
  • 不要跟关键字(有特殊含义的单词,后面会讲到)和系统保留字(如函数、模块等的名字)冲突。
  • PEP 8要求
  • 用小写字母拼写,多个单词用下划线连接。
  • 受保护的实例属性用单个下划线开头。
  • 私有的实例属性用两个下划线开头。
变量的使用

python的变量不需要声明数据类型,使用时直接使用**=**进行赋值。使用变量保存数据:

"""
version:0.1
Author:youzi
"""
a = 100
b = 200
查看变量的数据类型

python中提供了type()函数用于查看变量的数据类型。示例:

"""
version:0.1
Author:youzi
"""
number1 = 100
number2 = 200.01
bool1 = True
str1 = "hello"
print(type(number1))    # int
print(type(number2))	# float
print(type(bool1))	    # bool
print(type(str1))	    # str

python中内置了很多函数可以帮助我们对类型进行转换,常用的有:

  • int():将一个数值或字符串(字符串必须为数字)转换成整数,可以指定进制。
  • float():将一个字符串(字符串中必须为数字)转换成浮点数。
  • str():将指定的对象转换成字符串形式,可以指定编码。
  • chr():将整数转换成该编码对应的字符串(一个字符)。
  • ord():将字符串(一个字符)转换成对应的编码(整数)。
保存键盘中输入的数据

python中内置了input函数用来让用户输入,输入的内容都默认为str类型,使用时对类型进行转化:

"""
使用input()函数获取键盘输入(字符串)
使用int()函数将输入的字符串转换成整数
使用print()函数输出变量中保存的内容

Version: 0.1
Author: youzi
"""
a = int(input('a = '))
b = int(input('b = '))
c = input("c = ")
print(a,type(a))
print(b,type(b))
print(c,type(c))

二、运算符

Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。如果不确定运算符的优先级,可以使用小括号,小括号的优先级最高。

运算符

描述

[] [:]

下标,切片

**

指数

~ + -

按位取反, 正负号

* / % //

乘,除,模,整除

+ -

加,减

>> <<

右移,左移

&

按位与

^ |

按位异或,按位或

<= < > >=

小于等于,小于,大于,大于等于

== !=

等于,不等于

is is not

身份运算符

in not in

成员运算符

not or and

逻辑运算符

= += -= *= /= %= //= **= &= | = ^= >>= <<=

赋值运算符

赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量。

"""
赋值运算符和复合赋值运算符

Version: 0.1
Author: youzi
"""
a = 10
b = 3
a += b        # 相当于:a = a + b
a *= a + 2    # 相当于:a = a * (a + 2)
print(a)      # 算一下这里会输出什么
比较运算符和逻辑运算符

比较运算符有的地方也称为关系运算符,包括==!=<><=>=。唯一需要提醒的是比较相等用的是==,请注意这个地方是两个等号,因为=是赋值运算符,==才是比较相等的比较运算符。比较运算符会产生布尔值,要么是True要么是False

逻辑运算符有三个,分别是andornotand的优先级高于orand字面意思是“而且”,所以and运算符会连接两个布尔值,如果两个布尔值都是True,那么运算的结果就是True;左右两边的布尔值有一个是False,最终的运算结果就是False。如果and左边的布尔值是False,不管右边的布尔值是什么,最终的结果都是False,所以在做运算的时候右边的值会被跳过(短路处理),这也就意味着在and运算符左边为False的情况下,右边的表达式根本不会执行。or字面意思是“或者”,所以or运算符也会连接两个布尔值,如果两个布尔值有任意一个是True,那么最终的结果就是True。当然,or运算符也是有短路功能的,在它左边的布尔值为True的情况下,右边的表达式根本不会执行。not运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值,也就是说,后面的布尔值如果是True运算结果就是False,而后面的布尔值如果是False则运算结果就是True

"""
比较运算符和逻辑运算符的使用

Version: 0.1
Author: 柚子
"""
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0)    # flag0 = True
print('flag1 =', flag1)    # flag1 = True
print('flag2 =', flag2)    # flag2 = False
print('flag3 =', flag3)    # flag3 = False
print('flag4 =', flag4)    # flag4 = True
print('flag5 =', flag5)    # flag5 = False
"""
比较运算符和逻辑运算符的使用

Version: 0.1
Author: 骆昊
"""
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0)    # flag0 = True
print('flag1 =', flag1)    # flag1 = True
print('flag2 =', flag2)    # flag2 = False
print('flag3 =', flag3)    # flag3 = False
print('flag4 =', flag4)    # flag4 = True
print('flag5 =', flag5)    # flag5 = False

说明:

比较运算符的优先级高于赋值运算符,所以在:flag0 = 1 == 1时候,flag0的值为Trueprint函数想输出多个值时,多个值使用英文逗号隔开。

练习
  1. 看程序写结果,总结用法:
"""
使用input()函数获取键盘输入(字符串)
使用int()函数将输入的字符串转换成整数
使用print()函数输出带占位符的字符串

Version: 0.1
Author: youzi
"""
a =  int(3.4)
b = int(3.5)
c = int("12")
print(a,b,c)
输入圆的半径计算计算周长和面积。
"""
输入半径计算圆的周长和面积

Version: 0.1
Author: 柚子
"""
radius = float(input('请输入圆的半径: '))
perimeter = 2 * 3.14 * radius
area = 3.14 * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)

说明:%.2f是python小数类型的占位符,以后会有详细用法。

  1. 判断年份是不是闰年
    闰年:能被4整除且不能被100整除,或者能被400整除的。
"""
输入年份 如果是闰年输出True 否则输出False

Version: 0.1
Author: 柚子
"""
year = int(input('请输入年份: '))
# 如果代码太长写成一行不便于阅读 可以使用\对代码进行折行
is_leap = year % 4 == 0 and year % 100 != 0 or \
          year % 400 == 0
print(is_leap)

注意:之前提到过and的优先级比or高。