zoukankan      html  css  js  c++  java
  • Day 03 编码,基本数据类型

    一. 编码
    1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$%
      128个码位 2**7 在此基础上加了一位 2**8
      8位. 1个字节(byte)
    2. GBK 国标码 16位. 2个字节(双字节字符)
    3. unicode 万国码 32位, 4个字节
    4. utf-8: 英文 8 bit 1个字节
      欧洲文字 16bit 2个字节
      中文 24bit 3个字节

    8bit => 1 byte
    1024 byte = > 1kb
    1024 kb => 1mb
    1024mb => 1gb
    1024gb = > 1tb

    二. 基本数据类型的概述

    1,int 整数

    a = 3   # 1+1= 10 +1 = 11
    print(a.bit_length())   # 二进制长度

    2,str 字符串, 存储少量的数据

    3,bool 布尔

    结果只有True 或False

    4,list 列表, ["大阳哥", "东阳哥", ]

    5,tuple  元组. 只读列表, 不能改

    6,dict  字典; 一对一对的存储数据. key:value {"赵阳":"大阳哥", 'jay':"周杰伦"}

    7,set 集合. 存储不重复的内容

    三,. int, bool, str

      int 方法操作:

        bit_length() 求二进制长度

      bool: 类型转换

      1. 你想转换成什么. 就用什么把目标包裹起来
      2. 带空的是False, 不带空的True

    二.python基本数据类型

    1. int ==> 整数. 主要⽤来进⾏数学运算
    2. str ==> 字符串, 可以保存少量数据并进⾏相应的操作
    3. bool==>判断真假, True, False
    4. list==> 存储⼤量数据.⽤[ ]表⽰
    5. tuple=> 元组, 不可以发⽣改变 ⽤( )表⽰
    6. dict==> 字典, 保存键值对, ⼀样可以保存⼤量数据
    7. set==> 集合, 保存⼤量数据. 不可以重复. 其实就是不保存value的dict

    1). 整数(int)
    在python3中所有的整数都是int类型. 但在python2中如果数据量比较⼤. 会使⽤long类型.
    在python3中不存在long类型
    整数可以进行的操作:
    bit_length(). 计算整数在内存中占用的二进制码的长度

     

    三. 布尔值(bool)
    取值只有True, False. bool值没有操作.
    转换问题:
    str => int int(str)
    int => str str(int)
    int => bool bool(int). 0是False 非0是True
    bool=>int int(bool) True是1, False是0
    str => bool bool(str) 空字符串是False, 不空是True
    bool => str str(bool) 把bool值转换成相应的"值"

    四. 字符串(str)
    把字符连成串. 在python中⽤', ", ''', """引起来的内容被称为字符串.

    4.1 切片和索引
    1. 索引. 索引就是下标. 切记, 下标从0开始

    2. 切片, 我们可以使⽤下标来截取部分字符串的内容
    语法: str[start: end]
    规则: 顾头不顾腚, 从start开始截取. 截取到end位置. 但不包括end

    步⻓: 如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1
    切片语法:
    str[start:end:step]
    start: 起始位置
    end: 结束位置
    step:步⻓

    字符串转换成数字
    s = "128"
    i = int(s)
    print(type(i))
    ss = str(i)
    print(type(ss))
    综上可以得出. 你想转换成什么就用什么把目标括起来
    bool类型转换成数字  True: 1  False:0
    b = False
    c = int(b)
    print(c)
    int转换成bool  零: False 非零: True
    a = 0
    b = bool(a)
    print(b)
    
    
    while 1:    # 1的效率比true 稍微高一点点
        print("alex是个大xx")
    
    s = ""  #  "" 空字符串表示False, 非空字符串表示:True
    if s:
        print("哈哈")
    else:
        print("呵呵")
    
    空的东西都是False, 非空的东西都是True
    
    m = None    # 空 连空气都不如. 真空, False
    if m :
        print("a")
    else:
       print("b")

      str:字符串

        1. str索引和切片:

          索引:起始下标是0(从左到右), (-1)从右到左

        通过索引获取到的内容. 还是一个字符串
        切片可以对字符串进行截取
        语法 s[起始位置: 结束位置]
        特点:顾头不顾腚

    # s = "我爱周杰伦他媳妇"
    
    # print(s[0])
    # print(s[1])
    # print(s[2])
    # print(s[3])
    # print(s[4])
    
    # print(s[-1])
    # print(s[-2])
    # print(s[-3])
    # print(s[-4])

    切片: s[起始位置: 结束位置: 步长]

     特点:顾头不顾尾

    # s = "alex和wusir经常在一起搞基"
    # s1 = s[5:10]
    # print(s1)
    # s2 = s[0:4] + s[5:10]
    # print(s2)
    # s3 = s[5:]  # 默认到结尾
    # print(s3)
    #
    # s4 = s[:10] # 从头开始
    # print(s4)
    # s5 = s[:]   # 从头到尾都切出来
    # print(s5)
    
    # s6 = s[-2:] # 从-2 切到结尾  默认从左往右切
    # print(s6)
    # 步长
    # 语法:s[起始位置: 结束位置: 步长]
    # s = "我是梅西,我很慌"
    # s1 = s[1:5:2]   # 从1开始, 到5结束, 每2个取1个
    # print(s1)
    
    # s2 = s[::3]
    # print(s2)
    # s3 = s[6:2:-1]   # - 表示反着来. 每两个取1个
    # print(s3)
    
    
    # s = "这个标点符号很蛋疼"
    # # s1 = s[7::-2]
    # # print(s1)
    #
    # s2 = s[-1:-6:-2]
    # print(s2)

    2. 字符串的常用操作: 常用方法
      字符串不可变.
      1. upper() 转换成大写

      2. lower() 转换成小写

    s = "alex and wusir and taibai"
    s1 = s.capitalize()  # 首字母大写
    print(s)    # 原字符串不变
    print(s1)

      

    # while True:
    #     content = input("请喷:")
    #     if content.upper() == 'Q':
    #         break
    #     print("你喷了:", content)
    # s = "taiBai HenBai feicahngBai"
    # print(s.swapcase()) # 大小写转换
    # s = "al麻花藤ex and wu sir sir se"
    # print(s.title())
    # s = "麻花藤"
    # print(s.center(9, "*"))

            2. strip() 去掉空格

    # username = input("用户名:").strip()    # 去掉空格.
    # password = input("密码:").strip()     # 去掉空格
    # if username == 'alex' and password == '123':
    #     print("登录成功")
    # else:
    #     print("登录失败")

      

    # s = "*******呵a呵呵呵****************"
    # print(s.strip("*"))   # strip去掉的是左右两端的内容. 中间的不管
    # s = "alex wusir alex sb taibai"
    # s1 = s.replace("alex", "晓雪") # 原字符串不变
    # print(s1)
    # # 去掉上述字符串中的所有空格
    # s2 = s.replace(" ", "")
    # print(s2)

      3. replace() 替换

    # s3 = s.replace("alex", "sb", 2)
    # print(s3)

      4. split() 切割

    # s = "alex_wuse_taibai_bubai"
    # lst = s.split("_taibai_")    # 刀是_  切完的东西是列表. 列表装的是字符串
    # print(lst)

      5. format() 格式化输出

    # s = "我叫{}, 我今年{}岁了, 我喜欢{}".format("sylar", 18, "周杰伦的老婆")
    # print(s)
    # 可以指定位置
    # s = "我叫{1}, 我今年{0}岁了, 我喜欢{2}".format("sylar", 18, "周杰伦的老婆")
    # print(s)
    
    # s = "我叫{name}, 我今年{age}岁了, 我喜欢{mingxing}".format(name="sylar", mingxing="汪峰的老婆", age=18)
    # print(s)
    # 你喜欢用哪个就用哪个

      6. startswith() 判断是否以xxx开头

    # print(s.startswith("汪峰"))   # 判断字符串是否以xxx开头
    # print(s.endswith("爱妃"))     # 判断字符串是否以xxx结尾
    # print(s.count("国际章"))   # 计算xxx在字符串中出现的次数

      7. find() 查找. 找不到返回-1

      8.index() 查找,找不到报错

    # print(s.find("汪峰", 3))    # 计算xxx字符串在原字符串中出现的位置, 如果没出现返回 -1
    # print(s.index("国际章"))    # index中的内容如果不存在. 直接报错

     

    isdigit()  是否由数字组成
    isalpha()  是否由字母组成
    isalnum()  是否由字母和数字组成
    # s = "abc123"
    # print(s.isdigit())  # 判断字符串是否由数字组成
    # print(s.isalpha())  # 是否由字母组成
    # print(s.isalnum())  # 是否由字母和数字组成
    # s = "二千136万萬"
    # print(s.isnumeric())    # 数字

    9. len() 内置函数. 直接使用. 不用点操作 求字符串的长度 

    # s = "你今天喝酒了么"
    # i = len(s)  #  print() input() len() python的内置函数
    # print(i)
    #
    # i = s.__len__() # 也可以求长度 len()函数执行的时候实际执行的就是它
    # print(i)

    把字符串从头到尾进行遍历  

    # s = "晓雪老师.你好漂亮"
    # print(len(s))   # 长度是:8 索引到7
    # 1. 使用while循环来进行遍历
    # count = 0
    # while count < len(s):
    #     print(s[count])
    #     count = count + 1

    3. 迭代

      用for循环来遍历字符串
      for 变量 in 可迭代对象:

    优势:简单
    劣势:没有索引
    for c in s: # 把s中的每一个字符交给前面的c 循环
    print(c)

      循环体
      else:

    语法:
      for bianliang in 可迭代对象:
    循环体

    作业

    1.有变量量name = "aleX leNb" 完成如下操作:
    1)移除 name 变量量对应的值两边的空格,并输出处理理结果

    print(name.strip())

    2)移除name变量量左边的"al"并输出处理理结果

    print(name.lstrip("al"))

    3)移除name变量量右⾯面的"Nb",并输出处理理结果

    print(name.rstrip("Nb"))

    4)移除name变量量开头的a"与最后的"b",并输出处理理结果

    print((name.lstrip('a')).rstrip('b'))

    5)判断 name 变量量是否以 "al" 开头,并输出结果

    print(name.startswith('al'))

    6)判断name变量量是否以"Nb"结尾,并输出结果

    print(name.endswith('Nb'))

    7)将 name 变量量对应的值中的 所有的"l" 替换为 "p",并输出结果

    print(name.replace('l','p'))

    8)将name变量量对应的值中的第⼀一个"l"替换成"p",并输出结果

    print(name.replace('l','p',1)) 

    9)将 name 变量量对应的值根据 所有的"l" 分割,并输出结果。

    print(name.split('l'))

    10)将name变量量对应的值根据第⼀一个"l"分割,并输出结果。

    print(name.split('l',1))

    11)将 name 变量量对应的值变⼤大写,并输出结果

    print(name.upper())

    12)将 name 变量量对应的值变⼩小写,并输出结果

    print(name.lower())

    13)将name变量量对应的值⾸首字⺟母"a"⼤大写,并输出结果

    print(name.title())

    14)判断name变量量对应的值字⺟母"l"出现⼏几次,并输出结果

    print(name.count('l'))

    15)如果判断name变量量对应的值前四位"l"出现⼏几次,并输出结果

    print(name.count('l'))

    16)从name变量量对应的值中找到"N"对应的索引(如果找不不到则报错),并输出结果

    print(name.index('N'))

    17)从name变量量对应的值中找到"N"对应的索引(如果找不不到则返回-1)输出结果

    print(name.find('N'))

    18)从name变量量对应的值中找到"X le"对应的索引,并输出结果

    print(name.find('X le'))

    19)请输出 name 变量量对应的值的第 2 个字符?

    print(name[1])

    20)请输出 name 变量量对应的值的前 3 个字符?

    print(name[0:2])

    21)请输出 name 变量量对应的值的后 2 个字符?

    print(name[-2:])

    22)请输出 name 变量量对应的值中 "e" 所在索引位置?

    print(name.find('e'))

    2.有字符串串s = "123a4b5c"
    1)通过对s切⽚片形成新的字符串串s1,s1 = "123"

    s = "123a4b5c"
    s1 = s[0:3]
    print(s1)

    2)通过对s切⽚片形成新的字符串串s2,s2 = "a4b"

    s2 = s[3:6]
    print(s2)

    3)通过对s切⽚片形成新的字符串串s3,s3 = "1345"

    s3 = s[::2]
    print(s3)

    4)通过对s切⽚片形成字符串串s4,s4 = "2ab"

    s4 = s[1:6:2]
    print(s4)

    5)通过对s切⽚片形成字符串串s5,s5 = "c"

    s5 = s[-1:]
    print(s5)

    6)通过对s切⽚片形成字符串串s6,s6 = "ba2"

    s6 = s[5:0:-2]
    print(s6)

    3.使⽤用while和for循环分别打印字符串串s="asdfer"中每个元素。

    s = "asdfer"
    count = 0
    while count < len(s):
        print(s[count])
        count += 1
    for i in s:
        print(i)

    4.使⽤用for循环对s="asdfer"进⾏行行循环,但是每次打印的内容都是"asdfer"。

    s = 'asdfer'
    for i in s:
        print(s)

    5.使⽤用for循环对s="abcdefg"进⾏行行循环,每次打印的内容是每个字符加上sb,

    例例如:asb, bsb,csb,...gsb。

    s = "abcdefg"
    for i in s:
        print(i+"sb")

    6.使⽤用for循环对s="321"进⾏行行循环,打印的内容依次是:"倒计时3秒","倒计时
    2秒","倒计时1秒","出发!"。

    s = '321'
    for a in s:
        print("倒计时%s秒" % a)
    else:
        print("走吧!!!")

    7,实现⼀一个整数加法计算器器(两个数相加):
    如:content = input("请输⼊入内容:") ⽤用户输⼊入:5+9或5+ 9或5 + 9,然后进
    ⾏行行分割再进⾏行行计算。

    content = input("请输⼊内容:").strip()
    s = content.split("+")
    s2 = int(s[0])+int(s[1])
    print(s2)

    8,升级题:实现⼀一个整数加法计算器器(多个数相加):
    如:content = input("请输⼊入内容:") ⽤用户输⼊入:5+9+6 +12+ 13,然后进⾏行行
    分割再进⾏行行计算。

    content = input("请输⼊内容:").strip()
    lis = content.split("+")
    a1 =len(lis)
    count = 0
    sum = 0
    while count < a1:
        sum = sum + int(lis[count])
        count = count + 1
    print(sum)

    9,计算⽤用户输⼊入的内容中有⼏几个整数(以个位数为单位)。
    如:content = input("请输⼊入内容:") # 如fhdal234slfh98769fjdla

    content = input("请输⼊内容:").strip()
    count = 0
    b = 0
    while count < len(content):
        c = content[count]
        if c.isdigit():
            b += 1
        count += 1
    print("输入的有%s个整数" % (b))
    十.写代码,完成下列需求:
    ⽤户可持续输⼊(⽤while循环),⽤户使⽤的情况:
    输⼊A,则显示⾛⼤路回家,然后在让⽤户进⼀步选择:
    是选择公交⻋,还是步⾏?
    选择公交⻋,显示10分钟到家,并退出整个程序。
    选择步⾏,显示20分钟到家,并退出整个程序。
    输⼊B,则显示⾛⼩路回家,并退出整个程序。
    输⼊C,则显示绕道回家,然后在让⽤户进⼀步选择:
    是选择游戏厅玩会,还是⽹吧?
    选择游戏厅,则显示 ‘⼀个半⼩时到家,爸爸在家,拿棍等你。’并让其
    重新输⼊A,B,C选项。
    选择⽹吧,则显示‘两个⼩时到家,妈妈已做好了战⽃准备。’并让其重
    新输⼊A,B,C选项。
    while True:
        s = input("请输入A,B,C中的某一个:").upper()
        if s == "A":
            print("走大路回家")
            s1 = input("选择公交车还是步行:")
            if s1 == "步行":
                print("20分钟到家")
                break
            if s1 == "公交车":
                print("10分钟到家")
                break
        if s == "B":
            print("走小路回家")
            break
        if s == "C":
            while True:
                print("绕道回家")
                s2 = input("选择去游戏厅还是去网吧:")
                if s2 == "游戏厅":
                    print("⼀个半⼩时到家,爸爸在家,拿棍等你。")
                    break
                if s2 == "网吧":
                    print("两个⼩时到家,妈妈已做好了战⽃准备。")
                    break
    十一.写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
    count = 1
    sum = 0
    while count < 100:
        if count == 88:
            count += 1
            continue
        if count % 2 == 0:
            sum = sum - count
        else:
            sum = sum + count
        count = count + 1
    print(sum)
    十二. (升级题)判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海
    ⾃来⽔来⾃海上(升级题)
    s = input("请输入一句话")
    if s[::-1] == s:
        print("是回文")
    else:
        print("不是回文")
    十三. 输⼊⼀个字符串,要求判断在这个字符串中⼤写字⺟,⼩写字⺟,数字,
    其它字符共出现了多少次,并输出出来
    s = input("请输入一句话")
    upper_num = 0
    lower_num = 0
    num = 0
    other = 0
    for a in s:
        if a.isupper():
            upper_num += 1
        elif a.islower():
            lower_num += 1
        elif a.isdigit():
            num += 1
        else:
            other += 1
    print("大写字母有%s个,小学字母有%s个,数字有%s个,其他有%s个" % (upper_num,lower_num,num,other))
    十四、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名
    字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
    name = input("请输入你的名字:")
    address = input("请输入地点:")
    hobby = input("请输入爱好:")
    print("敬爱可亲的{name},最喜欢在{address}地方干{hobby}".format(name=name,address=address,hobby=hobby))
     
     
     
     
     
  • 相关阅读:
    java多线程编程(一)
    java的本地文件操作
    Java基础总结(二)
    Gym 100851 Distance on Triangulation
    Gym 100851 题解
    Gym 101482 题解
    CodeForces Round 521 div3
    zoj 5823 Soldier Game 2018 青岛 I
    CodeForces round 520 div2
    CodeForces 1042 F Leaf Sets 贪心
  • 原文地址:https://www.cnblogs.com/songhuasheng/p/9409519.html
Copyright © 2011-2022 走看看