zoukankan      html  css  js  c++  java
  • 字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换

    1、%s:

    a = "我是新力,我喜欢:%s,我钟爱:%s"
    b = a%("开车","唱跳rap")
    print(b)
    2、整型:

    整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较

    在32位机器上int的范围是:  -2**31~2**31-1,即-2147483648~2147483647

    在64位机器上int的范围是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807

    在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.

    在python3中不存在long类型

    3、进制转换:

    10进制(1,2,3,4,5)

    2进制(1,1,1,1)

    4、10进制转2进制(按余数求二进制、余数从下向上进行整合):

    print(bin(3))

    运算过程:

    3  /  2

    商  余数

     1  1

    1  1

    0

    9  /  2

    9    1

    4    0

    2    0

    1    1

    0

    结果:0b11(0b代表二进制)

    5、2进制转10进制(从右向左、计算机从0数)用int:

    举例:1010:

    末尾数乘以2乘以位置数

    0     * 2     ** 0 + 1 * 2 ** 1 + 0 * 2 ** 2 + 1 *  2 ** 3 = 10(第一个0是从右向左拿到的第一个数字、第二个0是用的计算机数数的第一位置)

    print(int("1010",2)) #第一个参数必须是字符串形式,2代表10进制、把字符串1010形式通过int转成10进制。

    6、可变数据类型和不可变数据类型定义:可以在原地修改的叫做可变数据类型。

                       不能在原地修改的叫做不可变数据类型。

    可变数据类型:列表、字典、集合。

    列表测试图:

    字典测试图:

    不可变数据类型:整型/数字、元组/tuple、字符串

    字符串测试:

    整型/数字测试:

    哈希验证:

          可变数据类型不可被哈希例如:列表、字典、集合

          列表测试:

          

          字典测试:

          

          不可变数据类型可哈希:整型、字符串、元组

          整型测试:

          

           字符串测试:

          

    图解如下:

    7、字符串/下标:

    name = "meet"--计算机从0开始

    print(name[2])--通过索引准确定位内容。

    8、切片:

    name = "meet_alex_wusir"

    print(name[5:8])--[起始位置:终止位置、步长默认是1] 顾头不顾尾

    print(name[-5:-1:-1]) 步长可以控制查找方向

    索引时、如果超出最大索引值会报错--IndexError: string index out of range--索引值超出最大范围

    切片时、如果超出最大索引值不会报错。

    索引和切片只能给有序数据类型使用。

    字符串:有序:索引、不可变:通过内存地址。

    9、小数据池--驻留机制

    name = "meet"

    name1 = "meet"

    print(id(name)) = print(id(name1))

    10、字符串方法详解:

    10.1 upper()是全部变大写

    name = "alex"            #字符串是不可变数据类型

    b = name.upper()          #upper()是全部变大写、b是重新开立下空间接收下。

    print(name)

    10.2 lower()是全部变小写

    name = "ALEX"

    name1 = name.lower()    

    print(name1)

    10.3 startswith()判断是以什么开头、返回的是布尔值、支持切片

    name = "alex"

    print(name.startswith("a",1,3)

    10.4 endswith()判断是以什么结尾。

    10.5 count()计数/统计

    10.6 strip()去除头尾两端空格及换行符、制表符、可以指定去除头尾两端的内容。

    10.7 split()默认按照空格及换行符、制表符进行分割、分割后是列表的形式。

    a = "alex:alex123"
    lst = a.split(":")  #可以指定字符的参数
    print(lst[0])     #可以指定索引位置

    10.8 replace()从左向右替换(参数1--旧值,参数2--新值,参数3--替换次数)

    10.9 isalnum()判断是不是由字母、中文、数字组成、返回的是布尔值。

    11.1 isalpha()判断是不是由字母、中文组成、返回的是布尔值。

    11.2 isdigit()判断是不是阿拉伯数字

    11.3 isdecimal()判断是不是10进制、返回的是布尔值。

    11.4 .join()可迭代对象中的元素必须也是可迭代才能使用。格式:"拼接符".join("可迭代对象")

    12、for循环:有限循环

    for 循环的结构

    for 关键字

    for i in XXX:

    i------------------------变量名

    in----------------------关键字

    XXX------------------可迭代对象

    name = "alex"

    """

    a

    l

    e

    x

    """

    for循环图解:

    举例如下:

    for a in "330112":
    a = a + "1"
    print(a)

    13、while循环:死循环

    举例如下:

    num = 5
    count = 1
    while num:
    for i in "abc":
    print(i + str(count))
    count += 1
    num -= 1
    结果如下:

    a1
    b1
    c1
    a2
    b2
    c2
    a3
    b3
    c3
    a4
    b4
    c4
    a5
    b5
    c5

    14、可迭代对象:字符串、列表、元组、集合、字典、range

    15、不可迭代对象:int and bool

    作业题:

    #16、有变量name = "aleX leNb" 完成如下操作:
    # 移除 name 变量对应的值两边的空格,并输出处理结果
    name = "aleX leNb"
    print(name.strip())
    # 判断 name 变量是否以 "al" 开头,并输出结果
    print(name.startswith("al"))
    # 判断name变量是否以"Nb"结尾,并输出结果
    print(name.endswith("Nb"))
    # 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
    print(name.replace("p","l"))
    # 将name变量对应的值中的第一个"l"替换成"p",并输出结果
    print(name.replace("1","p",1))
    # 将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
    print(name.split("l"))
    # 将name变量对应的值根据第一个"l"分割,并输出结果。
    print(name.split("l",1))
    # 将 name 变量对应的值变大写,并输出结果
    print(name.upper())
    # 将 name 变量对应的值变小写,并输出结果
    print(name.lower())
    # 判断name变量对应的值字母"l"出现几次,并输出结果
    print(name.count("l"))
    # 如何判断name变量对应的值前四位"l"出现几次,并输出结果
    name = "aleX leNb"
    print(name.count("l",0,4))
    # 请输出 name 变量对应的值的第 2 个字符?
    print(name[2])
    # 请输出 name 变量对应的值的前 3 个字符?
    print(name[:4])
    print(name[0:4])
    # 请输出 name 变量对应的值的后 2 个字符?
    print(name[-2::])
    #17、有字符串s = "123a4b5c"
    # 通过对s切片形成新的字符串s1,s1 = "123"
    s = "123a4b5c"
    print(s[0:3])
    # 通过对s切片形成新的字符串s2,s2 = "a4b"
    print(s[3:6])
    # 通过对s切片形成新的字符串s3,s3 = "1345"
    print(s[::2])
    # 通过对s切片形成字符串s4,s4 = "2ab"
    print(s[1:7:2])
    # 通过对s切片形成字符串s5,s5 = "c"
    print(s[-1])
    # 通过对s切片形成字符串s6,s6 = "ba2"
    print(s[-3::-2])
    #18、使用while和for循环分别打印字符串s="asdfer"中每个元素。
    #while循环:
    s = 'asdfer'
    index =0
    while 1:
    print(s[index])
    index += 1
    if index == len(s):
    break
    #for循环:
    s = "asdfer"
    for i in s:
    print(i)
    #19、使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"。
    s = "asdfer"
    for i in s:
    print(s)
    #20、使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb, 例如:asb, bsb,csb,...gsb。
    s = "abcdefg"
    for i in s:
    print(i + "sb")
    #21、使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。
    s = "321"
    for i in s:
    print("倒计时",i,"秒")
    print("出发!")
    #22、实现一个整数加法计算器(两个数相加):
    # 如:content = input("请输入内容:") 用户输入:5+9或5+ 9或5 + 9,然后进行分割再进行计算。
    content = input("请输入内容:").replace(" ","")
    lst = content.split("+")
    print(int(lst[0]) + int(lst[1]))
    #23、选做题:实现一个整数加法计算器(多个数相加):
    # 如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算。
    content = input("请输入内容:").replace(" ","")
    lst = content.split("+")
    num = 0
    for i in lst:
    num = num + int(i)
    print(num)
    #24、计算用户输入的内容中有几个整数(以个位数为单位)。
    # content = input("请输入内容1:") # 如fhdal234slfh98769fjdla
    content = input("请输入内容:")
    num = 0
    for i in content:
    if i.isdecimal():
    num += 1
    print(num)
    #25、写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
    count = 0
    num = 0
    while count < 100:
    if count % 2 == 1:
    num += count
    else:
    if count == 88: #到达88后不进行操作直接去加1处理89的
    count += 1
    continue
    num -= count
    count += 1
    print(num)
    #26、选做题:写代码,完成下列需求:
    # 用户可持续输入(用while循环),用户使用的情况:
    # 如果用户输入的是A,则显示走大路回家,然后在让用户进一步选择:
    # 是选择公交车,还是步行?
    # 如果选择公交车,显示10分钟到家,并退出整个程序。
    # 选择步行,显示20分钟到家,并退出整个程序。
    # 输入B,则显示走小路回家,并退出整个程序。
    # 输入C,则显示绕道回家,然后在让用户进一步选择:
    # 是选择游戏厅玩会,还是网吧?
    # 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
    # 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
    while True:
    choose = input("请输入选项:")
    if choose == "A":
    print("走大路回家")
    car = input("请选择交通工具(公交车|步行):")
    if car == "公交车":
    print("10分钟到家")
    break
    elif car == "步行":
    print("20分钟到家")
    break
    elif choose == "B":
    print("走小路回家")
    break
    elif choose == "C":
    print("绕道回家")
    play = input("请选择娱乐项目(游戏厅|网吧):")
    if play == "网吧":
    print("两个小时到家,妈妈已做好了战斗准备。")
    elif play == "游戏厅":
    print("一个半小时到家,爸爸在家,拿棍等你。")
    #27、选做题:判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海⾃来⽔来⾃海上
    msg = "上海自来水来自海上"
    if msg == msg[::-1]:
    print("就是回文")
    else:
    print("不是回文")
    #28、.制作趣味模板程序(使用字符串格式化)需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
    name = input("name:")
    addr = input("addr:")
    hobby = input("hobby:")
    msg = "敬爱可亲的%s,最喜欢在%s干%s"
    print(msg%(name,addr,hobby))
  • 相关阅读:
    ajax请求跨域和表单重复提交解决方案
    HTTP请求(HttpClient和PostMan)
    HTTP协议
    Oracle学习整理(二)
    oracle学习整理(一)
    MySQL的慢查询日志
    mysql索引优化
    Explain
    打好太极拳科学压腿的方法
    太极拳的压腿基本功
  • 原文地址:https://www.cnblogs.com/zhang-da/p/11569032.html
Copyright © 2011-2022 走看看