【Python】基础语法 2 (输入输出和运算符)

225 阅读7分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

1. 输入输出

程序需要和用户进行交互

  • 用户把信息传递给程序的过程,称为 “输入”。
  • 程序把结果展示给用户的过程,称为 “输出”。 输入输出的最基本的方法就是控制台。 用户通过控制台输入一些字符串, 程序再通过控制台打印出一些字符串。

PyCharm 运行程序,下方弹出的窗口就可以视为是控制台 在这里插入图片描述

1.1 通过控制台输出

Python 使用 print 函数输出到控制台

print('hello')

a = 10
print(a)

b = True
print(b)

在这里插入图片描述 我们可以看到 print 函数不仅能输出一个字符串,还可以输出一个其他类型的变量,但更多的时候,我们希望能够输出的内容是混合了字符串和变量的。

示例:输出 num = 10

num = 10
print(f'num = {num}')

在这里插入图片描述 注意:

  • print(f'num = {num}') 这个语法是叫做 ”格式化字符串“,使用 f 作为前缀的字符串,称为 f -string,此处的 f 表示 format 。
  • 里面可以使用 { } 来内嵌一个其他的变量/表达式。

1.2 通过控制台输入

python 使用 input 函数, 从控制台读取用户的输入

num = 0
num = input('请输入一个整数: ')
print(f'你输入的整数是 {num}')

在这里插入图片描述

注意:

  • input 的参数相当于一个 "提示信息", 也可以没有。
  • ==input 的返回值就是用户输入的内容. 是字符串类型==。

示例:输入两个整数,输出两个整数的和。

错误示范

a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')

在这里插入图片描述

分析: 此处的结果是字符串拼接, 不是算术运算. 如果要想进行算术运算, 需要先转换类型。

正确示范:

a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')

在这里插入图片描述

分析:

  • 如果只是但需的拿到用户的输入,然后打印,此时就按照 str 打印即可。
  • 如果需要根据用户输入的内容进行算术计算,此时就需要把读到的 str 转换成 int 通过 int( ) 把变量转成了 int 类型. 类似的, 使用 float( ), bool( ), str( ) 等可以完成对应的类型转换。

2. 运算符

2.1 算术运算符

像 + - * / % ** // 这种进行算术运算的运算符, 称为 算术运算符

+(加) -(减) *(乘) /(除) %(取余数)  **(乘方)  //(取整除法)

运算规则: 先算乘方,然后是乘除,最后算加减 如果想要改变运算规则,则需加()

==注意1:/ 中不能用 0 作为除数. 否则会 抛出异常==

print(10 / 0)

在这里插入图片描述 异常 是编程语言中的一种常见机制, 表示程序运行过程中, 出现了一些 "意外情况", 导致程序不能继续往下执行了。

==注意2: 整数 / 整数 结果可能是小数. 而不会截断==

print(1 / 2)

在这里插入图片描述

==注意3: % 不是 "百分数", 而是求余数==

print(7 % 2)

在这里插入图片描述 ==注意4: ** 是求乘方. 不光能算整数次方, 还能算小数次方==

print(4 ** 2)
print(4 ** 0.5)

在这里插入图片描述

==注意5: // 是取整除法(也叫地板除)。整数除以整数, 结果还是整数(舍弃小数部分, 并向下取整. 不是四舍五入)==

print(7 // 2)
print(-7 // 2)

在这里插入图片描述

2.2 关系运算符

像 < <= > >= == != 这一系列的运算符称为 关系运算符, 它们是在比较操作数之间的关系. 其中

  • <= 是 "小于等于"
  • >= 是 "大于等于"
  • == 是 "等于"
  • != 是 "不等于

(1) 如果关系符合, 则表达式返回 True. 如果关系不符合, 则表达式返回 False

a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

在这里插入图片描述 (2) 关系运算符不光针对整数/浮点数进行比较, 还能针对字符串进行比较

a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

在这里插入图片描述

注意:

  • 直接使用 == 或者 != 即可对字符串内容判定相等. (这一点和 C / Java 不同).
  • 字符串比较大小, 规则是 "字典序"

关于字典序: 想象一个英文词典, 上面的单词都是按照字母顺序排列. 如果首个字母相同, 就比较第二个字母. (就比如著名单词 abandon). 我们认为一个单词在词典上越靠前, 就越小. 越靠后, 就越大。

(3)对于浮点数来说,使用 == 比较相等,存在一定的风险,最好不要使用 == 比较相等

print(0.1 + 0.2 == 0.3)

在这里插入图片描述 注意: 因为 浮点数在内存中的存储和表示,并不是精确的是可能存在误差的,这样的误差在进行算术运算符运算的时候就可能被放大,从而导致误判。

print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)

在这里插入图片描述

我们可以看到,0.1 + 0.2 的结果并不是 0.3,虽然这两个数字已经非常接近了,但是如果直接使用 == 进行比较,仍然会出现 False 的情况。

正确的浮点数比较相等 不再严格比较相等了, 而是作差,判定差值是否小于允许的误差范围

a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)

在这里插入图片描述

注:在 Python中是支持连续小写的写法 判定 a - b 既是小于 000001 又是大于 -000001

2.3 逻辑运算符

像 and or not 这一系列的运算符称为 逻辑运算符

  • and 并且. 两侧操作数均为 True, 最终结果为 True. 否则为 False. (一假则假)
  • or 或者. 两侧操作数均为 False, 最终结果为 False. 否则为 True. (一真则真)
  • not 逻辑取反. 操作数本身为 True, 则返回 False. 本身为 False, 则返回 True
a = 10
b = 20
c = 30

print(a < b and b < c)
print(a < b and b > c)

print(a > b or b > c)
print(a < b or b > c)

print(not a < b)
print(not a > b)

在这里插入图片描述

一种特殊写法 a < b and b < c 这个操作等价于 a < b < c . 这个设定和大部分编程语言都不相同

==关于短路求值== 和其他编程语言类似, Python 也存在短路求值的规则.

  • 对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行。
  • 对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行。
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

在这里插入图片描述 上述代码没有抛出异常, 说明右侧的除以 0 操作没有真正执行。

2.4 赋值运算符

(1) = 的使用

  • = 表示赋值. 这个我们已经用过很多次了. 注意和 == 区分.
  • = 除了基本的用法之外, 还可以同时针对多个变量进行赋值

链式赋值

a = b = 10

多元赋值

a,b = 10,20

代码示例:交换两个变量

# 交换两个变量的值
a = 10
b = 20

# 基础写法
tmp = a
a = b
b = tmp

#基于多元赋值
a,b = 10,20

(2) 复合赋值运算符 Python 还有一些 复合赋值运算符. 例如 += -= *= /= %= 其中 a += 1 等价于 a = a + 1 . 其他复合赋值运算符也是同理。

a = 10
a = a + 1
print(a)

b = 10
b += 1
print(b)

在这里插入图片描述

注意: 像 C++ / Java 中, 存在 ++ -- 这样的自增/自减运算符. Python 中则不支持这种运算. 如果需要使用,则直接使用 += 1 或者 -= 1。

2.5 其他运算符

除了上述之外, Python 中还有一些运算符, 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符( & | ~ ^ << >>) 等.此处暂时不介绍。

补充: 在 Python中,一个语句写完之后,可以加分号,也可以不加,通常情况下都是不加的,如果加了,也不算错。 如果把多个语句写到同一行了,这个时候语句之间务必加上分号。(并不推荐)

a = 10; print(a)

本章到这里就结束啦,如果有哪里写的不好的地方,请指正。 如果觉得不错并且对你有帮助的话请给个三连支持一下吧! Fighting!!!✊