zoukankan      html  css  js  c++  java
  • [ python ] 字符串的操作及作业题

    字符串的操作方法

    capitalize() : 首字母大写

    s1 = 'my heart will go on'
    print(s1.capitalize())  # 首字母大写
    
    # 执行结果:
    # My heart will go on
    capitalize

    upper() : 全部大写

    s1 = 'my heart will go on'
    print(s1.upper())   # 全部转为大写
    
    # 执行结果:
    # MY HEART WILL GO ON
    upper

    lower() : 全部小写

    s1 = 'my heart will go on'
    print(s1.lower())   # 全部转为小写
    
    # 执行结果:
    # my heart will go on
    lower

     这里写一个使用大小写转换的实例,验证码的比较:

    auth_code = 'KDwq'
    
    user_code = input('请输入验证码(不区分大小写):')
    if user_code.upper() == auth_code.upper():      # 将验证码和用户输入的字符统一转换为大写进行比较;
        print('验证成功.')
    else:
        print('验证失败.')
    

     swapcase() : 大小写反转

    s1 = 'MY HEART will go ON'
    print(s1.swapcase())    # 大小写反转;大写转换为小写,小写转换为大写
    
    # 执行结果:
    # my heart WILL GO on
    swapcase

     title(): 标题首字母大写

    s1 = 'MY HEART will go ON'
    print(s1.title())   # 标题首字母大写,用空格隔开的每个单词都当作一个标题处理
    # # 执行结果:
    # My Heart Will Go On
    title

     center(): 居中,默认填充空格

    s1 = 'MY HEART will go ON'
    print(s1.center(30, '#'))   # 居中显示,第一个参数是位宽int类型,第二个参数是占位符,str类型;
    
    # 执行结果:
    # #####MY HEART will go ON######
    center

     startswith(): 以什么开头,返回 bool 值

    s1 = 'nice to meeting you'
    print(s1.startswith('ni'))  # 判断以什么字符串开始,返回bool类型,正确返回 True,错误返回 False
    
    # 执行结果:
    # True
    
    print(s1.startswith('no'))
    
    # 执行结果:
    # False
    startswith

    endswith(): 以什么结尾,返回 bool 值

    s1 = 'nice to meeting you'
    print(s1.endswith('you'))   # 判断以什么字符串结尾,返回bool类型,正确返回 True,错误返回 False
    
    # 执行结果:
    # True
    
    print(s1.endswith('yyy'))
    
    # 执行结果:
    # False
    endswith

    find() 和 index() 都是通过元素找索引的方法,区别如下:

    find()方法:元素存在打印索引,元素不存在返回 -1

    index()方法:元素存在打印索引,元素不存在报错。错误信息:ValueError: substring not found

    s1 = 'nice to meeting you'
    
    print(s1.find('to'))
    
    # 执行结果:
    # 5
    
    print(s1.find('xxx'))
    
    # 执行结果:
    # -1
    
    print(s1.index('to'))
    
    # 执行结果:
    # 5
    
    # print(s1.index('xxx'))
    
    # 执行结果:
    # ValueError: substring not found
    find 和 index

    所以,在程序中应当使用 find() 来查找索引,尽量避免程序出现报错信息

    strip(): 默认去除行首和行尾的空格;
        rstrip() 从左删
        lstrip() 从右删

    s1 = '    nice to meeting you    '
    
    print(s1.strip())   # 默认去除开头和结尾的空格部分;
    
    # 执行结果:
    # nice to meeting you
    
    s1 = '#######nice to meeting you#######'
    print(s1.strip('#'))    # 第一个参数为开头和结尾要去除的字符
    
    # 执行结果:
    # nice to meeting you
    strip

    count():统计字符串出现个数

    s1 = 'adfasdfasdfasdfertadf'
    print(s1.count('a'))    # 统计字符串出现的次数
    
    # 执行结果:
    # 5
    count

    split(): 按照指定字符分隔成多个元素  str --> list

    s1 = 'nice to meeting you'
    print(s1.split())   # 默认将字符串通过空格分隔并组成列表类型
    
    # 执行结果:
    # ['nice', 'to', 'meeting', 'you']
    split

    format 有三种用法:

    print('我叫{}, 跟我念一遍:{}, 年龄:{}, 爱好:{}'.format('clot', 'clot', 20, '摄影'))
    print('我叫{0}, 跟我念一遍:{0}, 年龄:{1}, 爱好:{2}'.format('clot', 20, '摄影'))
    print('我叫{name}, 跟我念一遍:{name}, 年龄:{age}, 爱好:{hobby}'.format(name='clot', age=20, hobby='摄影'))
    
    # 执行结果:
    #
    # 我叫clot, 跟我念一遍:clot, 年龄:20, 爱好:摄影
    # 我叫clot, 跟我念一遍:clot, 年龄:20, 爱好:摄影
    # 我叫clot, 跟我念一遍:clot, 年龄:20, 爱好:摄影
    format

     replace(): 字符串替换

    s1 = 'nice to meeting you'
    print(s1.replace('meeting', 'see')) # 在字符串中,用第一个参数替换掉第二个参数,默认是匹配上则全部替换
    
    # 执行结果:
    # nice to see you
    replace

    isdigit(): 判断字符串是否全部是数字组成

    s1 = '123123123123'
    print(s1.isdigit()) # 判断字符串是否全部由数字组成,小数点无法匹配上,返回bool类型;
    
    # 执行结果:
    # True
    isdigit

    isalpha():判断字符串是否全是字母组成

    s1 = 'asdfasdf'
    
    print(s1.isalpha()) # 判断字符串是否全部由字母组成,返回bool类型;
    
    # 执行结果:
    # True
    isalpha

    isalnum():判断字符串是否由数字和字母组成

    s1 = 'asdfa234asdf'
    
    print(s1.isalnum()) # 判断字符串是否全部由字母或字母组成,返回bool类型;
    
    # 执行结果:
    # True
    isalnum

    作业题

    1. 判断下列逻辑语句的 True、False

    1) 1 > 1 or 3 > 4 or 4 > 5 and 2> 1 and 9 > 8 or 7 < 6
    2) not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    3) 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2

    2. 求出下列逻辑语句的值。

    1) 8 or 3 and 4 or 2 and 0 or 9 and 7
    2) 0 or 2 and 3 and 4 or 6 and 0 or 3
    3) 5 and 9 or 10 and 2 or 3 and 5 or 4 or 5

    3. 下列结果是什么?
    1) 6 or 2 > 1
    2) 3 or 2 > 1
    3) 0 or 5 < 4
    4) 5 < 4 or 3
    5) 2 > 1 or 6
    6) 3 and 2 > 1
    7) 0 and 3 > 1
    8) 2 > 1 and 3
    9) 3 > 1 and 0
    10) 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2

    4. 写代码:计算 1-2+3...+99 中除了88意外所有数的总和?

    以下 F 表示: False, T 表示:True
    
    1. 判断下列逻辑语句的 True、False
    1) 1 > 1 or 3 > 4 or 4 > 5 and 2> 1 and 9 > 8 or 7 < 6
    计算过程:
    # 1 > 1 or 3 > 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    # 1 > 1 or 3 > 4 or F and 9 > 8 or 7 < 6
    # 1 > 1 or 3 > 4 or F or 7 < 6
    # F or F or 7 < 6
    # F or 7 < 6
    # F
    
    2) not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    计算过程:
    # F and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    # F or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    # F or F and 9 > 8 or 7 < 6
    # F or F or 7 < 6
    # F or 7 < 6
    # F
    
    3) 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2
    计算过程:
    # 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2
    # F or 4 > 5 and 2 > 1 or 9 < 8 and 4 > 6 or 3 < 2
    # F or F or 9 < 8 and 4 > 6 or 3 < 2
    # F or F or F or 3 < 2
    # F or F or 3 < 2
    # F or 3 < 2
    # F
    
    
    2. 求出下列逻辑语句的值。
    
    1) 8 or 3 and 4 or 2 and 0 or 9 and 7
    计算过程:
    # 8 or 3 and 4 or 2 and 0 or 9 and 7
    # 8 or 4 or 0 or 7
    # 8 or 0 or 7
    # 8 or 7
    # 8
    
    2) 0 or 2 and 3 and 4 or 6 and 0 or 3
    计算过程:
    # 0 or 2 and 3 and 4 or 6 and 0 or 3
    # 0 or 3 and 4 or 6 and 0 or 3
    # 0 or 4 or 6 and 0 or 3
    # 0 or 4 or 0 or 3
    # 4 or 0 or 3
    # 4 or 3
    # 4
    
    
    3) 5 and 9 or 10 and 2 or 3 and 5 or 4 or 5
    计算过程:
    # 5 and 9 or 10 and 2 or 3 and 5 or 4 or 5
    # 9 or 10 and 2 or 3 and 5 or 4 or 5
    # 9 or 2 or 3 and 5 or 4 or 5
    # 9 or 2 or 5 or 4 or 5
    # 9 or 5 or 4 or 5
    # 9 or 4 or 5
    # 9 or 5
    # 9
    
    3. 下列结果是什么? 
    提示:
    (1)牢记优先级:not > and > or2)and 取值
        
        从前往后,
        (a) 第一个数的bool值为 False,那就直接返回第一个数(0就返回0,False就返回False);
        (b) 如果第一个数的bool值为 True,第二个数的bool值为 False,则返回第二个数的值;
        (c) 如果两个数的bool值都为True,则返回第二个数.
        (d) 如果两个数的bool值都为False,则返回第一个数.
    
    (3)or 取值
        从前往后,
        (a) 第一个数的bool值为 False,那就直接返回第二个数;
        (b) 如果第一个数的bool值为 True,第二个数的bool值为 False,则返回第一个数的值;
        (c) 如果两个数的bool值都为True,则返回第一个数.
        (d) 如果两个数的bool值都为False,则返回第二个数.
        
    
    1) 6 or 2 > 1
    计算过程:
    print(6 or 2 > 1)
    # 6 or 2 > 1
    # 6 or T
    # 6
    
    2) 3 or 2 > 1
    计算过程:
    print(6 or 2 > 1)
    # 6 or 2 > 1
    # 6 or T
    # 6
    
    3) 0 or 5 < 4
    计算过程:
    print(0 or 5 < 4)
    # 0 or 5 < 4
    # 0 or F
    # False
    
    4) 5 < 4 or 3
    计算过程:
    print(5 < 4 or 3)
    # 5 < 4 or 3
    # F or 3
    # 3
    
    5) 2 > 1 or 6
    计算过程:
    print(2 > 1 or 6)
    # 2 > 1 or 6
    # T or 6
    # T
    
    6) 3 and 2 > 1
    计算过程:
    print(3 and 2 > 1)
    # 3 and 2 > 1
    # 3 and T
    # T
    
    7) 0 and 3 > 1
    计算过程:
    print(0 and 3 > 1)
    # 0 and 3 > 1
    # 0 and T
    # 0
    
    8) 2 > 1 and 3
    计算过程:
    print(2 > 1 and 3)
    # 2 > 1 and 3
    # T and 3
    # 3
    
    9) 3 > 1 and 0
    计算过程:
    print(3 > 1 and 0)
    # 3 > 1 and 0
    # T and 0
    # 0
    
    10) 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
    计算过程:
    print(3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2)
    # 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
    # T and 2 or 2 < 3 and 3 and 4 or 3 > 2
    # 2 or 2 < 3 and 3 and 4 or 3 > 2
    # 2 or F and 3 and 4 or 3 > 2
    # 2 or F and 4 or 3 > 2
    # 2 or F or 3 > 2
    # 2 or 3 > 2
    # 2 or T
    # 2
    
    
    
    
    4. 写代码:计算 1-2+3...+99 中除了88意外所有数的总和?
    
    num = 0
    count = 0
    while count < 100:
        count += 1      # count = count + 1 必须写在 continue 之前,否则进入死循环
        if count == 88:
            continue
        if count % 2:    # 获取奇数
            num += count
        else:
            num -= count
    print(num)
    作业题答案及分析过程
  • 相关阅读:
    POJ 1681 Painter's Problem(高斯消元法)
    HDU 3530 Subsequence(单调队列)
    HDU 4302 Holedox Eating(优先队列或者线段树)
    POJ 2947 Widget Factory(高斯消元法,解模线性方程组)
    HDU 3635 Dragon Balls(并查集)
    HDU 4301 Divide Chocolate(找规律,DP)
    POJ 1753 Flip Game(高斯消元)
    POJ 3185 The Water Bowls(高斯消元)
    克琳:http://liyu.eu5.org
    WinDbg使用
  • 原文地址:https://www.cnblogs.com/hukey/p/9612961.html
Copyright © 2011-2022 走看看