python-基本数据类型

一、什么是数据? 为何要与多种类型数据?

#数据即变量的值 如 age=18 ,18 则是我们保存的数据
#变量是来反映、保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同的类型的数据去标识
了解:python是一门解释型的强类型动态语言

 

二、数字

#int整形
定义:age=10 #age=int(10)
用于标识: 年龄 等级 身份证号  QQ号 个数

#float 浮点型
定义: salary=3.1 #salary=float(3.1)
用于标识: 工资 身高 体重
其他数据类型(了解部分)

 

三、字符串

#在python中,加了引号的字符就是字符串类型,python并没有字符串类型
定义: name = 'egon' #name=str('egon')
用于标识: 描述性的内容 姓名 形变 国籍  种族
#单引号、双引号、多引号区别, 只有在下面这种情况下 考虑单双引号混合使用
msg = "My name is Egon , I'm 18 years old!"

#多引号只有在有多行字符串的时候使用。
mag = '''
床前明月光,
疑似地上霜,
举头望明月,
低头思故乡。
'''
print(msg)
单引号,双引号,多引号之间的区别
#数字可以进行加减乘除等运算,字符串只能进行相加 和相乘运算。
>>>name = 'egon'
>>>age = '18'
>>>name+age #相加其实就是简单的拼接
'agon18'
>>>name*5
'egonegonegonegonegon'

#注意1:字符串相加效率不高
字符串1+字符串3,并不会在字符串1的基础上加上字符串2,而是申请一个新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次


#注意2:只能字符串加字符串,不能字符串加其他类型。字符串
字符串拼接(只能在字符串之间运行,且只能相加或相乘)

 

四、列表

#在[]内用逗号分隔,可以存放n个类型的值。
定义: students=['egon','alex','zhangwen',] #students=list(['egon','alex','zhangwen',])
用于标识:存储多个值得情况,比如一个人的喜好。
#存放多个学生的信息: 姓名,年龄,爱好
>>>students_info=[['egon',18,['play,]],['alex,18,['play','sleep']]]
>>>students_info[0][2][0] #取出第一个学生的第一个爱好
'play'
列表嵌套、取值

 

五、字典

#为何还要用字典?
存放一个人的信息:姓名,性别,年龄 多个值,既然存多个值,为什么不用刚学的列表呢
>>>info=['egon','male',18]
定义列表的目的不单单是为了存,还要考虑取值,如果想取出这个人的年龄 ,可以用
>>>info[2]
18
但这是基于我们已经知道在第三个位置存放的是年龄的前提下,我们才知道索引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,可以更方便高效的取值。
info={
        'name':'egon',
        'hobbies':['play','sleep'],
        'company_info:{
            'name':'olbdoy',
            'type':'education',    
            ‘emp_num’:40,
         }
 }

print(info['company-info'] ['name]) #取名字



students=[
        {'name':'alex','age':38,'hobbies':['play','sleep']},
        {'name':'egon','age':18,'hobbies:['reed',sleep']},
        {'name':'xiaoxiong','age':58','hobbies':['music',read','sleep']}
]

print(students[1] ['hobbies'] [1]) #取第二个学生的爱好
字典的嵌套和取值

 

 

六、布尔

#布尔值,一个True一个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、其余均为真。

7.1重点:

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

 

 

7.2格式化输出:

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

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

My name is xxx, my age is 18.

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

  这里就用到占位符、%s、%d

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

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

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

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

 

 

八、基本运算符:

计算机可以进行的运算有很多种,可不只是加减乘除这么简单,运算按种类可以分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算、先学习算数运算、比较运算、逻辑运算、赋值运算。

 

算数预算:

假设a=10,b=20

 

比较运算符:

假设a=10,b=20

 

赋值运算:

假设a=10,b=20

 

逻辑运算:

 

#1、三者的优先级关机: not>and>or, 同一优先级默认从左往右计算
>>>a>4 and 4>3 or 1==3 and 'x' =='x' or 3>3
False

#2、最好使用括号来区分优先级,其实意义与上面一样
'''
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的天剑不可分割
(2) 如果语句中全部用and连接,或全部用or连接,那么按照从左到右的顺序一次计算即可
(3)如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
'''
>>>(3>4 and 4>3) or (1==3 and 'x' =='x' ) or 3>3
False

#3、短路运算: 逻辑运算的结果一旦可以确定,那么就以当前处计算的值作为最终返回
>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsd' and 333 or 10 >4
用括号确认以下优先级
>>>(10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsd' and 333) or 10 >4
短路  :         0        ''                'abc'
                    假       假                真
返回:                                        'abc'

#4、短路运算面试题:
>>> 1 or 3
1
>>>1 and 3
3
>>>0 and 2 and 1
0
>>> 0 and 2 or 1
1
>>>0 and 2 or 1 or 4
1
>>>0 or False and 1
False

 

九、身份运算

#is比较的是id
#而==比较的是值

 

 

十、流程控制之if....else:

既然编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序中有相应的机制去模拟。人脑无非是数学运算,逻辑运算。

 

1、如果:女人的年龄>30,那么:叫阿姨

age_of_girl = 31
if age_of_girl >30
    print('阿姨好')

2、如果:女人的年龄》30岁,那么:叫阿姨,否则:叫小姐

age_of-girl = 18
if age_of_girl > 30:
    print('阿姨好')
else:
    print('小姐好')

3、如果:女人的年龄>=18并且<22岁并身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨

age_of_girl = 18
height = 171
weight = 99
id_pretty = True
if age_of_girl >= 18 and age_of_girl <22 and height > 170 and weight < 100 and is_pretty = True:
    print('表白....')else:
    print('阿姨好')

 

#在表白的基础上继续:
#如果表白成功,那么在一起。
#否则: 打印。。。

age_of_girl=18
height=171
weight=99
is_pretty=True

success=False

if age_of_girl >= 18 and age_of_girl < 22 and height  >170 and weight <100 and is_pretty == True:
    if success:
        print('表白成功,在一起')
    else:
        print('什么爱情不爱情,ainmb的爱情,。。。。')
else:
        print('阿姨好')

4、如果: 成绩>=90,那么:优秀

如果成绩>=80且<90 那么:良好

如果成绩>=70且<80 那么 普通

其他情况: 很差

score=input('>>: ')
score=int(score)

if score >= 90:
    print('优秀')
elif score >= 80:
    print('良好')
elif score >=70:
    print('普通')
else:
    print('很差')
if 条件1:
    缩进的代码块
elif 条件2:
    缩进的代码块
elif 条件3:
    缩进的代码块
.........

else:
    缩进的代码块

 

十一、流程控制之 while 循环:

1、为何要用训话?

#上面学习了if..else来完成年龄游戏,但if循环只能才一次就中的几率太小了,如果玩家给三次机会呢?

age_of_oldboy = 48

guess = int(input(">>:"))

if guess > age_of_oldboy :
    print("猜的太大了,往小里试试...")

elif guess < age_of_oldboy :
    print("猜的太小了,往大里试试...")

else:
    print("恭喜你,猜对了...")

#第2次
guess = int(input(">>:"))

if guess > age_of_oldboy :
    print("猜的太大了,往小里试试...")

elif guess < age_of_oldboy :
    print("猜的太小了,往大里试试...")

else:
    print("恭喜你,猜对了...")

#第3次
guess = int(input(">>:"))

if guess > age_of_oldboy :
    print("猜的太大了,往小里试试...")

elif guess < age_of_oldboy :
    print("猜的太小了,往大里试试...")

else:
    print("恭喜你,猜对了...")

#像这样复制三次if循环吗? 代码太丑了
#打印0-10:
count=0
while count <= 10:
    print('loop',count)
    count+=1

#打印0-10之间的偶数:
count= 10
while count <= 10:
    if cound%2 == 1:
        print('loop',count)
    count += 1

死循环:

import time
num = 0
while True:
    print('count',num)
    time.sleep(1)
    num+1

 循环嵌套与tag

tag=True

while tag:
    ....

        while tag:
            .....

            while tag:
                tag=False

 

 

十二、流程控制 之for循环

1、选代式循环: for,语法:

  for i in range(10):

     缩进的带块

2、break与continue(同上)

3、循环嵌套

for i in range(1,10):
    for j in range(1,i+1):
        print('%S*%S=%S' %(i,j,i*j,end=' ')
    print()

 

posted @ 2022-03-12 19:59  小熊知乎  阅读(87)  评论(0)    收藏  举报