day03-数据类型

一、用户与程序交互

1、什么是交互程序?

#人跟计算机交流所使用的一段话(程序、文件),当我们去银行ATM机取钱的时候,我们需要输入账户、密码,这个就是用户与程序的交互。

 2、为什么需要交互程序?

#群众的力量是强大的,人之所以成为人,首先是会合作,然后是使用工具,最后合作使用工具,通过交互程序,人能通过计算机的自动化程序、通过计算机网络通过跟更多的人合作完成一个人完全无法实现的工作。

3、怎么用交互程序?

#在python3中
input:用户输入任何值,都存成字符串类型

#在python2中
input:用户输入什么类型,就存成什么类型
raw_input:等于python3的input
a = input('Please input a string:>>>')
print(a)

 

二、注释

1、什么是注释?

#通过用自己熟悉的语言(汉语大白话),在程序中对某些代码(Python语法语言)进行标注说明,从而让自己更好的理解这段代码,进而大大增强程序的可读性。

2、为什么要使用注释?

#2.1 当我们投入一家新公司从事编程工作,如果别人不注释,你很有可能不知道这段代码是什么意思;
#2.2 方便自己查看和理解过去写的代码;  
#2.3 互联网人才流动大,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,公司为了项目能更好维护,需要适当写注释,以方便工作的交接。

3、怎么使用注释?

#代码注释分单行和多行注释, 单行注释用#,
#这是一行注释
print("Hello, World!")

4、还可以用三对双引号""" """

'''
Python 多行注释用三对单引号
Python 多行注释用三对单引号
Python 多行注释用三对单引号
'''

5、代码注释的原则:

#1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
#2. 注释可以用中文或英文,但不要用拼音

文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
 

三、数据类型

1、什么是数据?为何要有多种类型的数据?

#数据本质就是把事物通过量化的方式表现出来,事物是多种多样的,所以需要通过他们包含的相同特征进行分类,从而方便人们的辨识和统计。
#数据即变量的值,如age=18,18则是我们保存的数据。
#变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识

2、数字类型

int整数型

1.作用:
年龄,等级,身份证号,qq号,个数
2.定义:
age = 18 print(type(age)) 
<class'int'>
float浮点型

1.作用:
工资,身高,体重,
2.定义:
salary=3.1 #salary=float(3.1)
height = 70.5
print(type(height)) 
<class'float'>
#int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
#long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
>>> a= 2**64
>>> type(a)  #type()是查看数据类型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>

#complex复数型
>>> x=1-2j
>>> x.imag
-2.0
>>> x.real
1.0
其他数据类型(了解部分)

3、字符串

1.作用
表示描述性的内容,如姓名,性别,国籍,种族
2.定义 
name = "Ryan" 
type(name) <class'str'>
3.注意事项
#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is Egon , I'm 18 years old!"

#多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
单引号,双引号,三引号的区别
#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。
>>> name='egon'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'egon18'
>>> name*5 
'egonegonegonegonegon'
字符串拼接(只能在字符串之间进行,且只能相加或相乘)

4、列表

1.作用
存储多个值的情况,比如一个人有多个爱好
2.定义
hobby_list = ['invest','ai']
print(type(hobby_list))
<calss'list'>
print(hobby_list)
['invest','ai']
print(hobby_list[0])
#print(hobby_list[0])其中在变量hobby_list = ['invest','ai']中“ps”以及"ai"从左往右依次为0,1
#如果定义是变量如下
aa = [1,2,3,[4,5]]
#可以将上述函数看成
aa = [1, 2, 3, [4, 5]]
对应2       0  1
列表中的顺序
#存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[['Ryan',18,['play',]],['yun',18,['play','sleep']]]
>>> students_info[0][2][0] #取出第一个学生的第一个爱好
'play'
列表嵌套、取值

5、字典

#为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
>>> info=['egon','male',18]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
>>> info[2]
18
但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:#name, sex, age
info=['egon','male',18]
而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
为何还要用字典?
1.作用
用于存储多个字,也可以用key很快的检索到value,其中key以及value不能为没有意义的变量名

2.定义
ywy_dict = {
    'name':'yjw',
    'age':18,
    'hobby':['ps','ai']
}
print(type(yjw_dict))
<class 'dict'>

#打印名字
print(yjw_dict["name"])
#答应爱好中的PS
print(yjw_dict['hobby'][0])
#关于这个函数
yjw_dict = {
    'name':'yjw',
    #'name'
    'age':18,
    #'age'
    'hobby':['invest','ai']
               # 0     1
}
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={'name':'Ryan','age':18,'sex':18} #info=dict({'name':'Ryan','age':18,'sex':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
info={
    'name':'egon',
    'hobbies':['play','sleep'],
    'company_info':{
        'name':'Oldboy',
        'type':'education',
        'emp_num':40,
    }
}
print(info['company_info']['name']) #取公司名


students=[
    {'name':'alex','age':38,'hobbies':['play','sleep']},
    {'name':'egon','age':18,'hobbies':['read','sleep']},
    {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
]
print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好
字典相关的嵌套、取值

6、布尔值

#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
为什么需要布尔值
1.作用:
用来判断对错、是非
2.定义方式:
>>>'Yuan' == 'Yuan'
True
>>>[1,2,3] != [1.2.3]
False
#布尔值,一个True一个False
>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True

接下来就可以根据条件结果来干不同的事情了:
if a > b 
   print(a is bigger than b )

else 
   print(a is smaller than b )
上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。 

布尔类型的重点知识!!!:

#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真 

重点

#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
#2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间) 

 

五、格式化输出

  程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式

  比如要求用户输入用户名和年龄,然后打印如下格式:

  My name is xxx,my age is xxx.

  很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。

  这就用到了占位符,如:%s、%d

#%s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('Ryan',18))
#%d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('Ryan',18))
print('My name is %s,my age is %d' %('Ryan','18')) #报错

#接收用户输入,打印成指定格式
name=input('your name: ')
age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d

print('My name is %s,my age is %s' %(name,age))

#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错 

 

六、基本运算符

#计算机可以进行的运算有很多种,通常可以根据最终获得的值不同,可以分两类,结果为具体的值-->算数运算、赋值运算,结果为bool值--->比较运算、逻辑运算和成员运算。

1、算数运算

 以下假设变量:a=10,b=20

2、比较运算

以下假设变量:a=10,b=20

3、赋值运算

以下假设变量:a=10,b=20

4、逻辑运算

#三者的优先级从高到低分别是:not,or,and
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False
#最好使用括号来区别优先级,其实意义与上面的一样
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
False 

5、身份运算

#is比较的是id
#而==比较的是值
posted @ 2019-07-01 20:06  辕子  阅读(217)  评论(0编辑  收藏  举报