一.程序与用户交互
1.1、什么是与用户交互?
程序等待用户输入一些数据,然后程序执行完毕后为用户反馈信息。
1.2、为何程序要与用户交互?
为了让计算机像人一样能够与用户交互。
1.3、如何使用?
在python3中:input
name = input('请输入您的姓名:')
请输入您的姓名:Alex print(name,type(name))
Alex <class 'str'>
python3中,input会将用户输入的任何内容都存为字符串类型。
python2中,input要求用户必须输入一个明确的数据类型,输入什么类型就存为什么类型。
python2中,raw_input会将用户输入的任何内容都存为字符串类型与python3中的input功能一样。
1.4、格式化输出
1)、什么是格式化输出?
把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出。
2)、为什么要格式化输出?
我们经常会输出具有某种固定格式的内容,比如’亲爱的xxx您好!您XX月的话费是xxx,余额是xxx',我们需要做的就是将xxx替换为具体的内容。
3)、如何格式化输出?
这就用到了占位符:%s、%d。
# %s占位符可以接收任何类型的值 # %d占位符只能接收数值数字
print('亲爱的%s您好!您%d月的话费是%d,余额是%s' %('Tony',11,84.5,112))
#e.g. 接收用户输入打印成指定格式
name = input('your name: ') #用户输入年龄
age = input('your age: ') #用户输入年龄
sex = input('your sex: ') #用户输入性别
job = input('your job: ') #用户输入职业
print('-'12+' info of %s ' %(name)+'-'12)
print('Name : %s' %(name))
print('Age : %s' %(age)) #用户输入数字,会存成字符串,无法传给%d
print('Sex : %s' %(sex))
print('Job : %s' %(job))
print('-'16 + 'end' + '-'16)
#=====================================
'''
------------info of tony ------------
Name : xxx
Age : xxx
Sex : xxx
Job : xxx
----------------end----------------
'''
二、数据类型
2.1、数字类型:int与float
1)、整型:int
作用:记录年龄、登记、QQ号、各种号码。
#age = 18 等同于 age = int(18)
#print(age,type(age))
2)、浮点型:float
作用:记录身高、体重、薪资等。
#salary = 2.1 等同于 salary = float(2.1)
#print(salary,type(salary))
2.2、字符串类型:str
作用:记录描述性质的数据,比如人的名字,性别,家庭地址,公司简介等。
定义:再引号内按照从左到右的顺序依次包含一个个数据,引号可以是单引号、双引号、三引号。
name = 'egon'
print(name,type(name))
字符串之间可以相加:本质是申请新的内存空间,然后拷贝相加的字符串到新的空间,效率不高。
a = 'Hello,'
b = 'World!' print(a+b)
#结果Hello,World!
字符串还可以做乘法运算
print('Hello'*5)
#结果HelloHelloHelloHelloHello
2.3、列表类型:list
作用:记录/存多个值,可以方便地取出指定位置的值,比如人的多个爱好,一堆学生姓名。
定义:再[]内用逗号分隔开多个任意类型的值。
l = [10,3,1,'egon',['a','b']] #l = list([10,3,1,'egon',['a','b']]) print(l,type(l))
print(l[0])
10
print(l[3])
'egon'
2.4、字典类型:dict
作用:记录多个key:value值,优势是每一个value都有其对应关系/映射关系key,而key对value有描述性的功能
定义:再{}内用逗号分隔开多个key:value元素,其中value可以是任意数据类型,而key通常应该是字符串类型。
info = {'name':'egon','sex':'male','age':18} #info = dict({'name':'egon','sex':'male','age':18})
print(type(info))
print(info['name'])
2.5、布尔类型:bool
作用:用来作为判断的条件去用
定义:
tag = true #tag = bool(true)
tag = false
print(type(tag))
通过判断去得到布尔值:
age = 18
print(age == 18) # ==比较的是值是否相同
#====================================
x = 1
y = 1
print(x is y) # is比较的是id地址是否一样
三、运算符
3.1、算术运算符
3.2、比较运算符
3.3、赋值运算符
3.3.1、增量赋值
3.3.2、链式赋值
如果我们想把同一个值同时赋值给多个变量名,可以这么做
z = 10
y = z
x = y
x,y,z
(10,10,10)
链式赋值指的是可以用一行代码搞定这件事
x = y = z = 10
x,y,z
(10,10,10)
3.3.3、交叉赋值
我们定义两个变量m与n
m = 10 n = 20
如果我们想将m和n的值交换过来,可以这样做
m = 10
n = 20
a = m
m = n
n = a
print(m,n) 20,10
交叉赋值指的是可以用一行代码搞定这件事
m = 10
n = 20
m,n = n,m #交叉赋值
print(m,n)
3.3.4、解压赋值
如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做
nums=[11,22,33,44,55]
a=nums[0]
b=nums[1]
c=nums[2]
d=nums[3]
e=nums[4]
a,b,c,d,e
(11,22,33,44,55)
解压赋值指的是一行代码可以搞定这件事
nums=[11,22,33,44,55]
a,b,c,d,e=nums #nums包含多个值,就好比一个压缩包,加压赋值因此得名 a,b,c,d,e
(11,22,33,44,55)
注意,上述解压赋值,等号左边的变量名个数比喻与右边包含值的个数相同,否则会报错
但如果我们只想去头尾的几个值,可以用*_匹配。
3.4、逻辑运算符
3.4.1、连续多个and
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件结果都没True的情况下,最终结果才为True。
2 > 1 and 1 != 1 and true and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False False
3.4.2、连续多个or
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判断最终结果就位True,只有在所有条件的结果都为False的情况下,最近结果才为False
2 > 1 or 1 != 1 or true or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True True
3.4.3、混用and、or、not
#and、or、not三者如果混用时,时存在优先级之分的,但在日常开发中我们无需记忆优先级 #应该使用()来区分优先级、提升程序的可读性
(3 > 4 and 4 > 3) or ((1 == 3 and 'x' == 'x') or 3 > 3)
False
3.5、成员运算符
主语:虽然下属两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确。
not 'lili' in ['jack','tom','robin']
True
'lili' not in ['jack','tom','robin']
True
3.6、身份运算符
需要强调的是:==双等号比较的是value是否想等,而is比较的是id是否相等