一.程序与用户交互
1.1、什么是与用户交互?
程序等待用户输入一些数据,然后程序执行完毕后为用户反馈信息。
为了让计算机像人一样能够与用户交互。
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是否相等