• 【学习】字符串按单词反转


    第一天学python,做一个作业

    题目:字符串按单词反转(必须保留所有空格)。‘I love china!’  转化为 ‘china! love I’
     
    import string
    
    s = 'I love china!'
    s1=list(s.split())
    #构建一个空数组
    x=[]
    #反向遍历数组
    for c in reversed(s1):
        x.append(c)
    #按空格连接字符串
    print(' '.join(x))
    

    问题来了,用split()进行分割会存在问题,没法保留空格,好吧,那看看下面的代码

    def reverse(str_list, start, end):
        while start < end:
            str_list[start], str_list[end] = str_list[end], str_list[start]
            print('r_str_list_start:',str_list[start])
            print('r_str_list_end:',str_list[end])
            start += 1
            end -= 1
    
    setence = ' Hello, how are you?   Fine.    '
    str_list = list(setence)
    print('str_list:', str_list)
    i = 0
    while i < len(str_list):
        if str_list[i] != ' ':
            start = i
            end = start + 1
            print('start:', start)
            print('end:',end)
            while(end < len(str_list)) and str_list[end] != ' ':
                end += 1
                print('s_end:', end)
            reverse(str_list, start, end - 1)
            i = end 
            print('i:',i)
        else:
            i += 1
    
    print(str_list)
    str_list.reverse()
    print(''.join(str_list))
    

     不懂就调试调试再调试,直到搞清楚每个步骤和输出结果,菜鸟学习程序只能这样了

    看看打印输出结果
    str_list: [' ', 'H', 'e', 'l', 'l', 'o', ',', ' ', 'h', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u', '?', ' ', ' ', ' ', 'F', 'i', 'n', 'e', '.', ' ', ' ', ' ', ' ']  #输出列表
    start: 1   #i=1时,执行start=1, end +=1
    end: 2
    s_end: 3
    s_end: 4
    s_end: 5
    s_end: 6
    s_end: 7   #index为7时,遇到第一个'  '
    r_str_list_start: ,
    r_str_list_end: H
    r_str_list_start: o
    r_str_list_end: e
    r_str_list_start: l
    r_str_list_end: l
    i: 7
    start: 8
    end: 9
    s_end: 10
    s_end: 11
    r_str_list_start: w
    r_str_list_end: h
    i: 11
    start: 12
    end: 13
    s_end: 14
    s_end: 15
    r_str_list_start: e
    r_str_list_end: a
    i: 15
    start: 16
    end: 17
    s_end: 18
    s_end: 19
    s_end: 20
    r_str_list_start: ?
    r_str_list_end: y
    r_str_list_start: u
    r_str_list_end: o
    i: 20
    start: 23
    end: 24
    s_end: 25
    s_end: 26
    s_end: 27
    s_end: 28
    r_str_list_start: .
    r_str_list_end: F
    r_str_list_start: e
    r_str_list_end: i
    i: 28
    [' ', ',', 'o', 'l', 'l', 'e', 'H', ' ', 'w', 'o', 'h', ' ', 'e', 'r', 'a', ' ', '?', 'u', 'o', 'y', ' ', ' ', ' ', '.', 'e', 'n', 'i', 'F', ' ', ' ', ' ', ' ']
        Fine.   you? are how Hello, 
     
    好像成功了,感觉是要好些,的确是理解偏差1.gif
  • 相关阅读:
    db2构建临时结果集
    db2 in out inout
    杂文Python
    db2记录去重
    oop设计模式抽象总结
    Linux 查看发行版版本信息和内核版本
    第二节课:功能测试需求分析方法
    mybatis or的用法
    java中&& 的运算优先级高于||
    下载根目录下的pdf文件, 浏览器下载
  • 原文地址:https://www.cnblogs.com/yizhenfeng/p/6929709.html
Copyright © 2020-2023  润新知