zoukankan      html  css  js  c++  java
  • 数据类型

    '''
    数据类型
    '''

    # 一.什么是数据类型
    
    首先让我们回顾变量是什么:变量用来记录世界的状态。创建计算机的目的就是想要让计算机和人一样能够识别世间万物,既然计算机能够识别世间万物。那么我们来想想怎么让计算机来认识我呢?
    
    # 二.为何对数据分类
    
    变量的是用来反映状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识。
    
    # 三.不同的数据类型
    
    ## 1.数字类型
    
    整型和浮点型统称为数字类型。
    
    **(1)整型(int)**
    
    作用
    表示人的年龄、各种号码、级别
    
    ** 定义**
    
    ```
    age = 18  # age=int(18)
    
    print(id(age))
    print(type(age))
    print(age)
    4530100848
    <class 'int'>
    18
    ```
    
    ** 如何用**
    加减乘除、逻辑判断(大于、小于)
    
    **(2)浮点型(float)***
    *作用**
    
    表示身高、体重、薪资
    
    **定义**
    
    ```
    4569240656
    <class 'float'>
    2.1
    ```
    
    **如何用**
    加减乘除、逻辑判断(大于、小于)
    
    ## 2.字符串
    
    作用
    表示名字、爱好
    
    **定义**
    
    字符串相当于一根羊肉串。而字符串就是一串被串起来的字符,在单引号、双引号或三引号内包裹的一串字符。需要注意的是:三引号内的字符可以换行,而单双引号内的字符不行。
    
    ```
    name1 = 'nick'
    name2 = "egon"
    print(id(name1))
    print(type(name1))
    print(name1)
    4418849624
    <class 'str'>
    nick
    name3 = """nick
    egon"""
    
    print(name3)
    nick
    egon
    ```
    
    **如何用**
    
    字符串的拼接,即重新申请一个小空间把两个字符串都拷贝一份后再拼接。而不是你YY的把一个小空间内的变量值复制到另一个变量的小空间内,然后拼接。
    
    ```
    msg2 = "my name is 'nick'"
    msg3 = 'my name is "nick"'
    
    print(msg2 + msg3)  # my name is 'nick'my name is "nick"
    my name is 'nick'my name is "nick"
    ```
    
    注意:**如果字符串内有引号,则包裹字符串的引号和字符串内部的引号不能相同。**
    
    ```
    name = 'nick '
    print(name * 10)
    nick nick nick nick nick nick nick nick nick nick 
    ```
    
    注意:**字符串的乘法只能乘以数字。**
    
    ```
    msg1 = 'hello'
    msg2 = 'z'
    
    print(msg1 > msg2)
    False
    ```
    
    注意:**字符串比较大小,按照ASCII码比较,以后会细讲。**
    
    ```
    msg3 = 'zero'
    msg4 = 'zx'
    
    print(msg3 > msg4)
    print('Z' > 'A')
    print('Z' > 'a')
    False
    True
    False
    ```
    
    注意:**字符串的比较是字母的顺序。**
    
    ## 3.列表(list)
    
    如果现在有一个需求,我们需要存储一个人的爱好,如果我们使用我们之前学过的数据类型存储,那么毫无疑问,我么只能使用字符串存储,并且一个人的爱好可能是多个的,因此我们用空格作为爱好与爱好之间的分隔符。
    
    ```
    hobbies = "read run girl"
    print(hobbies)
    read run girl
    ```
    
    但是我们一直在强调,**存不是目的,取才是目的**。如果现在给我们一个需求,需要我们取出这个人的某个爱好,貌似以我们现在的知识无从下手。这个时候就得改变我们的策略,我们可以换种方法存储一个人的爱好——列表。
    
    ** 作用**
    存放多个值,如多个女朋友、多个爱好。
    
    **定义**
    
    在[]内用逗号分隔开任意类型的值。
    
    ```
    hobby = 'read'
    hobby_list = [hobby, 'run', 'girl']
    print(id(hobby_list))
    print(type(hobby_list))
    print(hobby_list)
    4558605960
    <class 'list'>
    ['read', 'run', 'girl']
    ```
    
    ** 如何用**
    
    ```
    hobby_list = ['read', 'run', 'girl']
    # 索引序号      0       1      2
    # 取出第二个爱好
    print(hobby_list[1])
    run
    hobby_list = ['read', 'run', ['girl_name', 18, 'shanghai']]
    # 取出girl的年龄
    print(hobby_list[2][1])
    18
    ```
    
    ## 4.字典(dict)
    
    如果现在有个需求需要存我的信息,通过我们之前学习的数据类型,只有列表能够存储我们的信息。
    
    ```
    user_info = ['nick', 'male', '19', ['oldboy', 'shanghai', 50]]
    
    print(user_info[1])  # 'male'
    print(user_info[0])  # 'nick'
    print(user_info[3][1])  # 'shanghai'
    male
    nick
    shanghai
    ```
    
    使用列表虽然达到了我们的目的,但是我们能通过列表取值的时候,是基于我们已经知道了列表内部所有的元素。因此我们是不是可以给列表内的每一个元素都添加一个描述信息呢?否则如果不是存我的信息,而是用列表存取了成千上万个值,那么我们怎么通过索引精准取值呢?这样看起来好像是不可能的,因此可以使用新的数据类型——字典。
    
    **作用**
    **定义**
    
    在{}内用逗号分隔开多个元素,每一个元素都是key: value的格式,其中value是任意格式的数据类型,key由于具有描述性的作用,所以key通常是字符串类型。
    
    ```
    user_info = {'name': 'nick', 'gender': 'male', 'age': 19,
                 'company_info': ['oldboy', 'shanghai', 50]}
    
    print(id(user_info))
    print(type(user_info))
    print(user_info)
    4396183344
    <class 'dict'>
    {'name': 'nick', 'gender': 'male', 'age': 19, 'company_info': ['oldboy', 'shanghai', 50]}
    ```
    
    **如何用**
    
    ```
    # 字典套列表
    user_info = {'name': 'nick', 'gender': 'male', 'age': 19,
                 'company_info': ['oldboy', 'shanghai', 50]}
    print(user_info['name'])
    print(user_info['company_info'][0])
    nick
    oldboy
    # 字典套字典
    user_info = {'name': 'nick', 'gender': 'male', 'age': 19, 'company_info': {
        'c_name': 'oldboy', 'c_addr': 'shanghai', 'c_num_of_employee': 50}}
    
    print(user_info['name'])
    print(user_info['company_info']['c_name'])
    nick
    oldboy
    ```
    
    **练习**
    
    ```
    students = [
        {'name': 'nick', 'age': 19},
        {'name': 'egon', 'age': 18}
    ]
    print(students[0]['name'])
    nick
    ```
    
    ## 5.布尔值(bool)
    
    作用
    
    用于判断条件结果
    True、False通常情况不会直接引用,需要使用逻辑运算得到结果。
    
    **定义**
    **如何用**
    
    ```
    print(type(True))
    print(True)
    <class 'bool'>
    True
    print(bool(0))
    print(bool('nick'))
    print(bool(1 > 2))
    print(bool(1 == 1))
    False
    True
    False
    True
    ```
    
    注意:**Python中所有数据类型的值自带布尔值。如此多的数据类型中只需要记住只有0、None、空、False的布尔值为False,其余的为True。**
    
    ```
    print(bool(0))
    print(bool(None))
    print(bool(''))
    print(bool([]))
    print(bool({}))
    print(bool(False))
    False
    False
    False
    False
    False
    False
    ```
    
  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/11277904.html
Copyright © 2011-2022 走看看