一 与用户交互
1.1 输入input
# 在python3中input功能会等待用户的输入,用户输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名
>>> username=input('请输入您的用户名:')
请输入您的用户名:jack # username = "jack"
>>> password=input('请输入您的密码:')
请输入您的密码:123 # password = "123"
# 了解知识:
# 1、在python2中存在一个raw_input功能与python3中的input功能一模一样
# 2、在python2中还存在一个input功能,需要用户输入一个明确的数据类型,输入什么类型就存成什么类型
>>> l=input('输入什么类型就存成什么类型: ')
输入什么类型就存成什么类型: [1,2,3]
>>> type(l)
<type 'list'>
1.2 输出print
# 默认print功能有一个end参数,该参数的默认值为"
"(代表换行),可以将end参数的值改成任意其它字符
print("aaaa",end='')
print("bbbb",end='#')
print("cccc",end='@')
#整体输出结果为:aaaabbbb#cccc@
二 格式化输出
注:这里格式化输出都是指的是字符串的格式化输出。
1.1 %方式
1 %s可以接收任意类型,%d只能接收int
值按照位置与%s一一对应,少一个不行,多一个也不行
res="my name is %s my age is %s" %("18",'han')
print('my age is %d' %18)
2 以字典的形式传值,打破位置的限制
res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'han'}
3 输入出 百分比形式数据 例:97%
print('成功的概率 %s%%'%(97,)) #97%
1.2 str.format
1 按位置传值
res='我的名字是 {} 我的年龄是 {}'.format('jax',18)
res1='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('ying',18)
2 打破位置的限制,按照key=value传值
res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='yinghan')
3 四舍五入
print('{salary:.3f}'.format(salary=1232.12351)) #精确到小数点后3位,四舍五入,结果为:1232.124
1.3 f " " 方式
这是python3.5以后才推出的格式化方式。
x = input('your name: ')
y = input('your age: ')
res = f'我的名字是{x} 我的年龄是{y}'
print(res)
{ }内的字符串可以被当做表达式运行
res =f'10+3'
print(res) #13
2 拓展
2.1 填充与格式化
先取到值,然后在冒号后设定填充格式填充自字符,对齐方式,宽度
# *<10:左对齐,总共10个字符,不够的用*号填充
print('{0:*<10}'.format('开始执行')) # 开始执行******
print('{x:=>10}'.format(x = '开始执行'))# ******开始执行
# *>10:右对齐,总共10个字符,不够的用*号填充
print('{0:*>10}'.format('开始执行')) # ******开始执行
print('{x:=<10}'.format(x='开始执行')) # 开始执行******
# *^10:居中显示,总共10个字符,不够的用*号填充
print('{0:*^10}'.format('开始执行')) # ***开始执行***
print('{x:=^10}'.format(x='开始执行')) # ***开始执行***
2.2 精度与进制
print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124
print('{0:b}'.format(123)) # 转成二进制,结果为:1111011
print('{0:o}'.format(9)) # 转成八进制,结果为:11
print('{0:x}'.format(15)) # 转成十六进制,结果为:f
print('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931
三 运算符
1 算数运算符
print(10 + 3.1)
print(10 + 3)
print(10 / 3) # 结果带小数
print(10 // 3) # 只保留整数部分
print(10 % 3) # 取模、取余数
print(10 ** 3) #
2 比较运算符
比较运算符有:>、>=、<、<=、==、!=
print(10 > 3) #True
print(10 == 10) #True
print(10 >= 10) #True
print(10 >= 3) #True
print(10 != 10) #False
3 赋值运算符
3.1直接赋值
a = 10
name = 'han'
3.2 增量式赋值
a = 10
a += 1
print(a) # 11
3.3 链式赋值
x=y=z=10
3.4 交叉赋值
m = 10
n = 20
m, n = n, m
print(m) #20
print(n) #10
3.5 解压赋值
num = [1,2,3,4]
a,b,c,d = num #对应的变量名少一个不行
print(a,b,c,d) #1 2 3 4
引入*,可以帮助我们取两头的值,无法取中间的值
num = [1,2,3,4]
a,b,*_ = num # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
print(a,b) #1 2
a,*_,d = num
print(a,d) #1 4
解压字典默认解压出来的是字典key
x,y,z={'a':1,'b':2,'c':3}
print(x,y,z) #a b c
3.6 逻辑运算符
not :就是把紧跟其后的那个条件结果取反
print(not 18 > 12) #False
print(not 10) #False
print(not None) #True
and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真。
print(True and 1) # 1
print(True and 10>3 and [])#[] 条件全为真,最终结果才为true
or:逻辑或,or用来链接左右两个条件,两个条件但凡是有一个为True最终结果为True;两个条件同时为False,最终结果才为False
print(3 > 2 or 0) #True
如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺讯依次运算即可(偷懒原则)
res=3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3 >3
print(res)#False
可以根据优先级转化为下面,方便观察:
res=(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3 >3
print(res) #False
如果是混用,则需要考虑优先级了
优先级 not > and > or
扩展:
print(1 and 10) #10
print(1 or 2) # 1
print(11 or 2 and 3) # 11
print(True and 10>3 and 0) #0
print(1 and True) #True
print(True and 1) #1
print(3 > 2 or 0) #True
print(True and 10>3 and []) #[]
3.7 成员运算符 in
判断一个字符串是否存在于一个大字符串中
print('han' in 'hello han')#True
print("e" in "hello egon") #True
判断元素是否存在于列表
print(11 in [11,22]) #True
判断key 是否存在于字典
print("k1" in {"k1":111,'k2':222}) #True
print(111 in {"k1":111,'k2':222}) #False
3.8 身份运算符 is
is : 判断的是id是否相等
a = 11
b = a
print(a is b) #True
3.9 短路运算
短路运算:偷懒原则,偷懒到哪个位置,就把当前哪个位置的值(显式或隐式)返回
print(True and 10>3 and 0) #0
print(1 and True) #True
print(True and 1) #1
print(3 > 2 or 0) #True
print(True and 10>3 and []) #[]