天天看点

python的用户交互和运算符

1. 用户交互

1.1 python3中的用户交互

这里站在程序员 ( 人 ) 与计算机之间的交互, 本质就是你向计算机输入内容, 计算机输出内容, 反馈给你.

1.1.1 接收用户的输入

通过input方法

name = input('请输入你的大名:')
      

1.1.2 坑

注意: 在python3中,无论用户输入什么input都会把它放到一对引号中, 就是把原数据类型, 转换成了字符串类型.

所以如果输入的int类型,想要进行四则运算, 那么就要自己手动进行一下类型转换

x = input('请输入数字')
x = int(x)
print(x + 10)
      

1.2 python2中的用户交互

1.2.1 raw_input( )

python2中raw_input ( ) 等同于python3中的input , 都是会把用户输入的内容转化成字符串类型

1.2.2 input ( )

python2中的input ( ), 不会自动更改用户输入内容的数据类型, 你输入什么类型,就返回什么类型的内容

你是不是突然感觉好方便, 不用做数据转换了, 但是你忽略了一点, 程序是给用户使用的, 虽然我们作为开发用python2中input ( ) 很方便, 但是对用户不是友好的, 因为如果你要使用就必须先了解python的基础数据类型,

如果是这样, 用户估计会口吐芬芳. 所以这些是在python发展中舍弃这种用户交互.

2. 格式化输出

输入是input 输出就是output,在python中输出用print体现出来。

2.1 什么是格式化输出

就是字面意思,按照一定的格式输出内容, 如: 输出班级中每个学生的姓名和年龄

姓名:xxx,年龄:xxx

      

这个时候我们可以把格式理解成模板, 只需要替换里面的关键内容即可

姓名:张三,年龄:18
姓名:张四,年龄:19
姓名:张五,年龄:20
姓名:张六,年龄:21
姓名:张七,年龄:22

      

2.2 格式化输出的三种方式

2.2.1 % 格式化

% 格式化是自从python诞生以来就有的一种格式化方法, 意思就是说python2可以用这种方法,python3也可以

使用:

# %s 可以接收任意类型
name = 'alex'

info = '大家好我叫%s' % name
print(info) # 大家好我叫alex

# %d 只能接收int类型

print('我的年龄是%d' % 18)

# %f 只能接收float类型

print('我的体重是%fkg' % 55.7)
      

2.2.2 format ( ) 格式化

format ( ) 是在python2.6后出现的一种方法, 我们做格式化, 本质上是字符串的格式化, format ( ) 是字符串的一种内置方法, 是python解释器提供好的

使用:

  1. 一般情况

    ​res = '我叫{},今年{}岁'.format('tom',18) #通过位置一一对应 print(res) ​

  2. 通过索引

    ​res = '我叫{1},今年{0}岁'.format(18,'tom') #通过索引一一对应 print(res) ​

  3. 通过key=value

    ​res = '我叫{name},今年{age}岁'.format(name='tom',age=18) #通过key=value一一对应 print(res) ​

2.2.3 f 格式化

f 格式化是python3.5以后才出现的一种更优雅的python格式化方式

使用:

name = input('请输入名字:')
age = input('请输入年龄:')
res = f'你的名字是{name},年龄是{age}岁'
print(res)
      

2.3 三种格式化之间的速度

  • 最快: f 格式化
  • 其次: format( ) 格式化 [ 推荐这种方法 ]
  • 最慢: % 格式化

运算符

3. 算术运算符

3.1 什么是算数运算符

就是做加减乘除四则运算以及其他的复杂运算的, 让计算机能像人一样可以做计算

符号 含义
+ 相加
- 相减
* 相乘
/ 相除 (有小数部分,结果全是float类型)
// 地板除 (只保留整数部分)
% 取余/取模 (只保留余数)
** 幂运算
print(10/2) # 5.0 float类型
      

4. 比较运算符

4.1 什么是比较运算符

就是做比较运算的, 让计算机能像人一样可以做比较

符号 含义
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于

5. 赋值运算符

5.1 什么是赋值运算符

就是做赋值操作的, 让计算机能像人一样给一个事物附上一个值, 记录下来

5.1.1 增量赋值
符号 含义
= 变量的赋值
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
//= 取整等于
%= 取余等于
**= 幂等于
5.1.2 交叉赋值
x = 10
y = 20
x,y = y,x
      
5.1.3 链式赋值
x=y=z = 10
# 把栈区中的10的内存地址分别赋值给x,y,z
      
5.1.4 解压赋值

一般适合在取开头前几个或者末尾几个数据的值,不适合取数据量大的容器的中间值。

*x,y,_,z = [10,20,30,40,50]
print(x,type(x)) # [10] <clas list>
x,y,*_,z = [10,20,30,40,50]
_,_,_*m,_ = [10,20,30,40,50]
      

6. 逻辑运算符

6.1 逻辑运算

所谓的逻辑运算,你可以先简单的认为就是判断,比如今天下不下雨,下雨。这就一个判断。

6.2 逻辑运算符

逻辑运算符就是用来把多个条件连在一起做判断的符号

符号 含义
not 非(取反)
and
or
6.2.1 not
# not: 就是把紧跟其后的那个条件结果取反
# not与紧跟其后的那个条件是一个不可分割的整体
print(not 16 > 13) # False
print(not 0) # True
      
6.2.2 and

and(逻辑与)用来连接左右两个条件。两个条件同时为真,最终结果才为真。如果连接多个条件, 条件全为真, 最

终结果才是True.

print(True and 10 > 1) # True

print(1 > 3 and 4 > 8 and False )
      
6.2.3 or

or ( 逻辑或 ) 用来连接左右两个条件, 两个条件但凡有一个为True, 最终结果就为True, 两个条件都为False的情况,

最终结果才为False。

如果连接多个条件, 条件全为假, 最终结果才是False。

print(3 > 2 or False) # True

print(False or 6 < 5 or 7 > 99) #False
      

6.3 逻辑运算符的优先级

如果单独的就只是一串and/or连接, 按照从左到右的顺序依次运算即可。如果是混合使用就要考虑优先级了。

6.3.1 优先级

括号 ( ) > not > and > or

print(3 > 4 and not 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3) # False
      

这种混合运算一般不会出现在自己代码里, 只有面试题你会见到

小练习:

not 3 > 4 and 5 > 7 or 7 > 9 and not 3 == 3 and x=='x'

3 > 4 and 5 > 7 and 7 > 9 or not 3 == 3 and x=='x'
      

6.4 短路运算

短路运算:遵循偷懒原则,偷懒到哪个位置,就把当前位置的值返回。在面试题中,一般和逻辑运算符优先级一起

考。注意一点,返回的值不一定是显示的布尔值,可能是隐式的布尔值

10 > 3 and True     # 偷懒到True,所以返回True
10 < 100 and 0 and True # 偷懒到0,返回0
10 and 0 or 1 > 3 and 9 == 9 or 80 > 70 # 先看优先级,然后再看每个部分偷懒到哪里,然后再算最后的值 True
      

7. 成员运算符

7.1 in

成员运算符就是判断是否存在, 返回一个布尔值

# 判断一个小字符串是否在一个大字符串中
print( 'x' in 'zhenxiang' ) # True

# 判断元素是否存在于列表
print( 10 in [11,10,12]) # True

# 判断key是否存在于字典
print('k1' in {'k1':1}) # True
      

7.2 not in

判断是否不在,一般判断不存在时,推荐使用这种。

print( 'mn' not in 'hello word') # True
      

8. 身份运算符

8.1 is

is 就是身份运算符, 判断的是id是否相等, id( ) , 在cpython中返回的是程序运行时, 对象在内存中的地址

x = 'hello mn'
y = 'hello mn'
print(x is y) # True
# 但记住有的时候值相等未必id相等