用户交互,运算符

  • 2021 年 1 月 29 日
  • 笔记

1.交互

1.1输入input

用户的input输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名

username=input(‘请输入你的姓名:’)

1.2输出print

默认的print功能有一个end参数,该参数的默认值为“\n”,可以将end参数的值改成任意其它字符。

1.3格式化输出

这是一个重点内容

把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出

2.格式化输出字符串的4种方式

2.1 %号

2.1.1格式的字符串(%s)与被格式化的字符串(传入的值)必须按照位置一一对应

print('%s asked %s to do something' %('han','xiaobei')

2.1.2通过字典的方式格式化,打破了位置带来的限制与困扰

print('我的名字是%(name)s,我的年龄是%(age)s.' %{'age':'han','age':20})

kwargs={'name':'hange','age':25}
print('我的名字是%(name)s,我的年龄是%(age)s.' %kwargs)

2.2 str.format

该format方法是在Python2.6中引入的,是字符串类型内置方法,因str.format方式在性能和使用的灵活性上都比%好,所以推荐使用

2.2.1使用位置参数

按照位置一一对应
print('{} asked {} to do something'.format('han','xiaohan'))

2.2.2使用索引

#使用索引取对应位置的值
print('{0}{0}{1}{0}'.format('x','y'))   #xxyx
print('{1} ask {0} to do something'.format('han','xiaohan')) 

2.2.3 使用关键字参数or字典

#可以通过关键字or字典的方式格式化,打破了位置带来的限制与困扰
print('我的名字是{name},我的年龄是{age}.'.format(name='xiaohan',age=20)
kwargs={'name':'xiaohan','age':20}
print('我的名字是{name},我的年龄是{age}.'.format(**kwargs))  #使用**进行解包操作

2.2.4 填充与格式化

#先取值,然后在冒号后设定填充格式
print('{0:*<10}'.format('开始执行'))    #*<10,左对齐,总共10个字符,不够用*号填充
print('{0:*>10}'.format('执行完毕'))    #右对齐
print('{0:*^10}'.format('正在执行'))    #居中对齐 

2.2.5 精度与进制

print('{salary:.3f}'.format(salary=3.1415926)
print('{0:b}'.foramt(123))  转为二进制
print('{0:o}'.format(9)     转为八进制    #此处的0代表的的是后面的第1个索引的位置

2.3 f-Strings

f-string是以f或F开头的字符串,核心在于字符串中符号{}的使用

name='xiaohan'
age=20
print(f'{name}is {age}')
print(F'{age} is {name}')

2.3.1 {}中可以是变量名

2.3.2 {}中可以是表达式

#可以在{}中放置任意合法的Python表达式,会在运行时计算
#如:数学表达式
	print(f'{3*3/2}')
#如:函数的调用 
def foo(n):
	print('foo say hello')
return n 
print(f'{foo(10)}')

#如:调用对象
name='han'
print(f'{name.lower()}')

3.基本运算符

3.1 算数运算符

如:+ – * / //(取整除) %(取余) **(幂)

3.2比较运算符

如:== != > 〉= < ≤

3.3赋值运算符

=,+=,-=,*=,/=,//=,%=,**=

3.4链式赋值

z=10
y=10
x=y
x,y,z
(10,10,10)

也要以写为
x=y=z=10
print(x,y,z)
10,10,10

3.5 交叉赋值

m=10
n=20
m,n = n,m
print(m,n)       20,10

4.逻辑运算符

and or not 优先级为:not>and>or

  • 原理:1.not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
    • 2.如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
      • 3.如果语句既有and也有or,那么先用括号把and的左右两个条件括起来,然后再运算
 3>4 and 4>3 or 1==3 and 'x'=='x' or 3>3 可以转化为:
(3>4 and 4>3) or (1==3 and 'x'=='x') or 3>3

5.成员运算符

in 和not in

'han' in ['han','xiaohan']
12 not in ['han','xiaohan']

6.身份运算符

is 和is not

  1. is 比较的是id,两个对象的id相同则返回True
  2. 在两个对象id不同时is not 会返回True