变量与操作符

浏览 2929

课文

上一节课的最后我们跑了一行代码,其中print属于 python 的内置方法。它的功能是接收一个参数,并将其打印到终端。

小提示:这里的打印跟打印机的打印有点区别,可以理解为显示或输出。而终端则是常见的黑框框窗口,能方便我们进行一些字符上的交互,而无需大费周章地写一个操作界面。

print('hello world')

变量

变量是一个程序代码的最基本组成单位,如同一个菜篮子一般。我们可以往其中放入想保存的任何数据,再对其进行操作。

我们只需要用 =(赋值) 号,左边写上变量名,右边写上值,就可创建一个新的变量。

name = '小明'
age = 20
height = 1.8

此时我们创建了 name、age、height 三个变量,其中分别保存着名字、年龄、身高。接着使用 print 方法将变量的值打印出来。

print(name)
print(age)
print(height)

输出:

小明
20
1.8

类型

python 的变量会区分不同的类型,不同的类型有着各自对应的方法和可执行的操作,平时使用时应严格区分。可以使用 type 方法查看变量对应的类型。

人类可以根据上下文语义对交流的内容自行地区分,它是属于价格年龄之类的数字还是小说之类的文本内容。如果是价格之类的数字我们就可以进行加减乘除等运算。而计算机在语义分析上没有这么完善,所以需要人为地对数据进行定义。区别数据属于数字还是文本,让计算机明白可以进行什么样的操作。这就是类型存在的意义。

print(type(name))
print(type(age))
print(type(height))

输出:

<class 'str'>
<class 'int'>
<class 'float'>

很明显的,用单引号包裹起来的字符串属于 string(字符串) 类型。对于数字来说,没有小数点的属于 int(整数)类型, 有小数点的则是 float(浮点) 类型。

需要注意的是,一个数字如果用单引号包起来,它也属于字符串类型。

print(type('123'))

输出:

<class 'str'>

变量名和关键字

在编写程序时我们推荐使用一些有意义的变量名,方便我的理解和使用。

变量名的长度不受限,可以由字母数字下划线(_)组成,但不能以数字作为变量名的第一个字符。通常推荐使用小写字母作为变量名的首字符,而下划线通常约定俗成地用作私有变量的首字符。

以下都是错误的命名示范。

10year = 10
year@ = 10
def = 10

其中 10year 用数字开头,year@ 有 @ 这个 非法字符 , def 是保留关键字。

至于保留关键字是指 python 中已经预先占用的字符,包括但不限于一些数据常量,语法定义符,运算符等等。

在 python 有以下 35 个保留关键字。

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

语句

一条语句是 python 中的基本可执行单元,所有的程序都是由这些可执行语句组成的, 执行顺序为从上往下执行。

print(1)
x = 2
print(x)
print(x + 1)

输出

1
2
3

print 语句会在终端打印出内容,而赋值语句则没有输出。

算术运算符

既然电脑被称为计算机,那它必须是有计算的功能。python 中有着日常中所用到的七个常见的算术运算符,分别是 +(加)、-(减)、*(乘)、/(除)、%(取模)、**(幂) 和 //(取整除)运算符。

x = 5
y = 2
print('x + y =', x + y)
print('x - y =', x - y)
print('x * y =', x * y)
print('x / y =', x / y)
print('x % y =', x % y)
print('x ** y =', x ** y)
print('x // y =', x // y)

输出

x + y = 7
x - y = 3
x * y = 10
x / y = 2.5
x % y = 1
x ** y = 25
x // y = 2

我们在上面的例子中给 print 传递了两个参数,

第一个是'x + y ='字符串,第二个是 x + y的计算结果。

print 函数可以接收多个参数, 它会自动拼接字符串打印。

赋值运算符

赋值运算是左边的变量与右边的值先运算再重新给左边变量赋值的意思。

python 中有以下八种赋值运算符号,=+=-=*=/=%=**=//=

x = 8
x += 3
x -= 3
x *= 3
x /= 3
x %= 3
x **= 3 - 1
x //= 3
print(x)

这里就不贴运行结果了,口算能力强的同学可以先口算一下,再用 python 跑一遍对比下结果。

算术运算符的优先级

当多个运算符出现在一个表达式中时,就要依靠运算符的优先级判断其操作顺序。对于算术运算符,python 遵守着数学规则的惯例。

  • 括号中的操作拥有着最高优先级。例如 2 * (2 + 1) 的结果是 6(4 - 1) * (2 + 1) 的结果是 9
  • 其次是 ** 运算符,2 * 3 ** 2 的结果是 18 而不是 36
  • 接着是 */%// 运算符。3 + 4 * 2 的结果是 11
  • 最后是 +- 运算符。
  • 当运算符优先级属于同级时,则会从左往右进行运算。 2 + 3 - 5 的结果是 0

小提示:对于运算符的优先级不必死记硬背,一个是由于实际中很少出现很长的运算表达式。再者当记不清的时候直接用括号括起需要优先运算的部分,或将表达式拆分成几个表达式,简单明了还提高可读性。

字符串上使用运算符

字符串支持两种运算符,+* 运算符。

+ 用于连接两个字符串,因此要求运算符两边都是字符串。

name = '小明'
action = '打球'
result = name + action

print(result)

输出

小明打球

* 可以将字符串重复 n 次,所以运算符的一边要求是字符串另一边则必须是数字。

name = '小明傻X '
namex3 = name * 3

print(namex3)

输出

小明傻X 小明傻X 小明傻X

接收用户的输入

程序的目的就是为了接收人们的输入加以处理并输出。如我们平时打游戏时,鼠标键盘就是输入设备,而显示器音响则是输出设备。

这里我们用input方法接收用户的输入,当用户输入了字符并回车时则会返回一个字符串。

inp = input()
print('您输入的是:', inp)

输入小明爱吃瓜并回车 此时会同时打印出您输入的是:小明爱吃瓜

小明爱吃瓜
您输入的是:小明爱吃瓜

可以给 input 一个字符串参数,它将会在用户输入之前给予提示。 这里的 \n 作用是换行。

name = input('请输入你的名字:\n')
print(name + '爱吃瓜')

让我们输入名字并回车。

请输入你的名字:
小明
小明爱吃瓜

需要注意的是,input 接收并返回的值永远是字符串,如果要将其作为其他类型使用必须要进行类型转换。

错误范例

n = input('请输入一个数字\n')
print(n + 2)
请输入一个数字
3
Traceback (most recent call last):
  File ".\first.py", line 2, in <module>
    print(n + 2)
TypeError: can only concatenate str (not "int") to str

此时需要对输入的字符串进行类型上的转换。int(x) 是将 x 这个变量或值转换成 int 类型,同理还有 float(x)str(x) 等。

n = input('请输入一个数字\n')
print(int(n) + 2)
请输入一个数字
3
5

注释

当我们写了一长串代码时,很容易造成难以理解,可读性变差。 此时我们可以通过加注释的方式,来解决一段代码的含义,帮助我们理解代码。在 python 中通过加 # 号的方式来表明之后的内容是注释。

words = '小明爱吃瓜 '
# 重要的事情说三遍
print(words * 3)

输出

小明爱吃瓜 小明爱吃瓜 小明爱吃瓜

注释可以跟在代码之后无需另起一行

result = 1 + 1 # 一加一等于二

选择一个有意义的变量名

前面提到过当对变量进行命名时,我们只要避免使用其保留关键字就能防止报错。但对于编写可读性、可维护性更强的代码来说还远远不够,我们应该尽量在命名变量时使用一些有意义的名字。

比如当我们想计算一小时有多少秒时。

a = 1
b = a * 60
c = b * 60
print(c)
a1xx577 = 1
gg77s8w = a1xx577 * 60
l97www2 = gg77s8w * 60
print(l97www2)
second = 1
minute = second * 60
hour = minute * 60
print(hour)

这三种写法在 python 中执行的效果都是一样的,对于机器来说他们之前并没有区别。从我们人类的角度来看,很明显第三种写法更容易理解。

特别是 python 在设计之初本着简单易学的理念便参考了很多人类的语法表达方式, 此时再搭配上有意义的变量命名更能让我们写出健壮(可读性强,结构清晰)的代码。

实战

1.写一个“复读机”,将你每次说的话复读两遍。

请输入你要说的话:
花儿对我笑
复读第一遍: 花儿对我笑
复读第二遍: 花儿对我笑

2.输入两个数 a b,输出 a 除以 b 的余数。最好加上恰当的注释。

求余计算器
请输入 a:7
请输入 b:2
a 除以 b 的余数是: 1

解析

1.写一个“复读机”,将你每次说的话复读两遍。

inp = input('请输入你要说的话:\n')
print('复读第一遍:', inp)
print('复读第二遍:', inp)

2.写一个求余计算器。

print('求余计算器') # 计算器名称
# 接受用户输入并进行类型转换
a = int(input('请输入 a:'))
b = int(input('请输入 b:'))
# 输出计算结果
print('a 除以 b 的余数是:', a % b)
点击查看

评论

登录参与讨论

2021-04-04

回复

元气少女李逵

挺形象的比喻

2021-05-14

回复

家住魔仙堡

懂了,变量就是个菜篮子

2021-05-17

回复

共 3 条
  • 1
前往
  • 1