第二篇 输入与输出以及基础运算符
#一、与用户交互
1 什么是交互
- 交互即是与计算机交流,通过输入数据来让计算机执行任务
2 为什么需要交互
- 计算机的发明是为了奴役计算机,解放劳动力
- 假设我们现在写了一个ATM系统取代了柜员,如果我们要在这台ATM上取款,那么这个ATM是不是会要求我们输入姓名、密码?是不是需要我们输入我们需要取款金额?这就可以理解为一种交互
3 如何交互
-
格式:
input()
-
name = input('请输入你的姓名:') pwd = input('请输入你的密码:') print(type(name)) print(type(pwd))
结果是
请输入你的姓名:king 请输入你的密码:123 <class 'str'> <class 'str'>
-
通过上面的打印结果,我们可以发现
input()
方法的作用只是接收值,并且无论我们输入的值是数字类型、字符串类型、列表类型,input的接收值都是字符串类型。由于我们目前基础知识不够,我们暂时使用input()
交互,之后会使用Web/可视化界面的形式交互
#二、格式化输出
*** 由于python简洁的风格,我们在进行编写输出时很容易和以前C语言的printf()搞混,python中不需要输出控制符(%d、%s等等)也可以进行打印
*** 在python中,print()里面可以直接写输出对象,它会将输出对象的值打印出来,但是必须明确它的类型
## *** ==特别要注意区分输出占位符 {} 里面是放变量名的,可以是任何数据类型,在print()不能把它看作字典定义符号 {} 来使用==
1 占位符
-
name = 'king' gender = 'male' age = 26 print('my name is %s my gender is %s my age is %d'%(name,gender,age)) #输入层年龄是也可以写成: print('my age is %s'%age)
结果是 my name is king my gender is male my age is 26
-
%s(针对所有数据类型)、%d(仅仅针对数字类型)
2 f-string格式化(推荐)
-
name = 'king' gender = 'male' age = 26 salary = 6.6666 print(f'my name is {name} my gender is {gender} my age is {age}') print(f'{age/2}') print(f'{salary:.2f}') #表示向前移动两位小数点
结果是 my name is king my gender is male my age is 26
13
6.67
-
f 大小写都可以
3 format格式化(不推荐)
-
name = 'king' sex = man print("Hello, {}! You are a good {}.".format(name, sex))
结果是Hello, king! You are a good man.
#三、基本运算符
重点1——解压缩
-
假如有个列表,我们一次性取出多个值,一般可以做如下操作
name_list = ['king', 'tom', 'bob'] x = name_list[0] y = name_list[1] z = name_list[2] print(f'{x}, {y},{z}')
结果是 king,tom,bob
-
而如果我们用解压缩,则更简单
name_list = ['king', 'tom', 'bob', ] x, y, z = name_list print(f'{x},{y},{z}')
结果和上面一样
-
有时候我们解压缩的值可能是我们不想要的,那么可以使用下划线,但是下划线不能放在开头或结尾
name_list = ['king', 'tom', 'bob', ] x, _, z = name_list '''相当于告诉计算机我们不要中间的数据了,但是不能将*_放在开头或者结尾''' print(f'{x},{z}')
输出结果是 king,bob
-
有时我们可以用 *_ 把中间的全部省略,同样不能放在开头或结尾
name_list = ['king','queen','tom','bob'] a,*_,d = name_list #相当于不取出queen和tom print(f'a,d')
输出结果是king,bob
-
解压缩也可以用于字典,不过字典解压缩的是key
user_info = {'name':'king','age':26} x,y = user_info print(x,y)
输出结果是 name , age
重点2——交叉赋值
-
将两个变量的值互换
-
在C中可以利用临时变量来实现
#include <stdio.h> int main(void) { int a = 12; int b = 6; int temporary; printf("a = %d, b = %d",a,b); temporary = a; a = b; b = temporary; printf("a = %d, b = %d",a,b); return 0; }
输出结果是a = 12, b = 6
a = 6, b = 12
-
用python来交换两个变量的值,可以有更简单的方法(交叉赋值)
a = 12 b = 6 a,b = b,a print(a,b)
输出结果是 6,12
重点3——链式赋值
-
给多个变量赋相同的值
-
一般方法
a = 3 b = 3 c = 3 d = 3
-
python有更简单的方法(链式赋值)
a = b = c = d = 3
1 算术运算符
- 加( + )、减( - )、乘( * )、除( / )、取整( // )、取余( % )、指数幂( ** )
2 比较运算符
- 等于 ==、小于 <、小于等于 <=、大于 >、大于等于 >=
-
i_list = [1, 'a', 3] j_list = [3] print(i_list < j_list)
结果是True
-
k_list = [1, 3] print(i_list < k_list) # 报错,列表比较大小仅限于同一位置的对应的值是相同的数据类型
结果是——————————————————————————————
TypeError Traceback (most recent call last)
in
1
2 k_list = [1, 3]
----> 3 print(i_list < k_list) # 报错,列表比较大小仅限于同一位置的对应的值是相同的类型
TypeError: '<' not supported between instances of 'str' and 'int'————————————————————————————————
3 赋值运算符
- =、+=、-= 、*=、/=等等
4 逻辑运算符
- and(且、与) 、or (或)、not(非)
5 身份运算符
-
is(判断id是否相同)、is not(判断id是否不同)
-
is和==的区别:is用于判断两个变量引用对象是否为同一个(是否在同一块内存空间中,类似于比较变量的地址), ==用于判断引用变量的值是否相等。
-
x = 257 y = x z = 257 print(f'x is y:{x is y}') print(f'x == y:{x == y}') print(f'x is z:{x is z}') #由于已经超出了小整数池,所以地址一般不同 print(f'x == z:{x == z}')
结果是:
x is y:True
x == y:True
x is z:False
x == z:True
6 运算符的优先级
- 不推荐记忆