一.程序与用户交互

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、算术运算符

python 与nc交互 python数据交互_python 与nc交互

3.2、比较运算符

python 与nc交互 python数据交互_python 与nc交互_02

3.3、赋值运算符

3.3.1、增量赋值

python 与nc交互 python数据交互_格式化输出_03

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、逻辑运算符

python 与nc交互 python数据交互_赋值_04

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、成员运算符

python 与nc交互 python数据交互_字符串_05

主语:虽然下属两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确。

not 'lili' in ['jack','tom','robin'] 
True
'lili' not in ['jack','tom','robin'] 
True

3.6、身份运算符

python 与nc交互 python数据交互_字符串_06

需要强调的是:==双等号比较的是value是否想等,而is比较的是id是否相等