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

第一天学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, 

好像成功了,感觉是要好些,的确是理解偏差

时间: 2024-10-17 13:38:31

【Python学习】字符串按单词反转的相关文章

[Python学习] 专题三.字符串的基础知识

        在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础         字符串指一有序的字符序列集合,用单引号.双引号.三重(单双均可)引号引起来.如:         s1='www.csdn.net'   s2="www.csdn.net"   s3='''aaabbb'''         其中字符串又包括:        1.转义字符串         像C语言中定义了一些字母前加"\

php字符串按照单词进行反转的方法

 本文实例讲述了php字符串按照单词进行反转的方法.分享给大家供大家参考.具体分析如下: 下面的php代码可以将字符串按照单词进行反转输出,实际上市现将字符串按照空格分隔到数组,然后对数组进行反转输出 <?php $s = "Reversing a string by word"; // break the string up into words $words = explode(' ',$s); // reverse the array of words $words = a

面试问题之 按单词反转字符串

按单词反转字符串   题目要求:把字符串"I am a student"反转成为"student a am I",不借助任何库函数.   字符串中单词顺序反转的方法有很多种,我们可以定义一个栈结构,根据栈的特性,先进后出.我们通过依次查找空格(在实际分析单词应用中这只是最简单的情况,单词之间可能直接用标点符号区分,但是使用标点符号并不意味着就是两个单词,西方世界计数方式喜欢使用三位数字加一个逗号形式比如"3,483,123",虽然我们可以找到&q

python统计文本字符串里单词出现频率的方法

  本文实例讲述了python统计文本字符串里单词出现频率的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # word frequency in a text # tested with Python24 vegaseat 25aug2005 # Chinese wisdom ...

php字符串按照单词进行反转的方法_php技巧

本文实例讲述了php字符串按照单词进行反转的方法.分享给大家供大家参考.具体分析如下: 下面的php代码可以将字符串按照单词进行反转输出,实际上市现将字符串按照空格分隔到数组,然后对数组进行反转输出 <?php $s = "Reversing a string by word"; // break the string up into words $words = explode(' ',$s); // reverse the array of words $words = ar

Python 学习笔记之数字与字符串

Python 是解析型的语言,所以我首先需要一个 Python 解析器.我开始的时候傻乎乎地用 Ubuntu 执行了 apt-get install python, 结果它告诉我已经安装过了. 好吧,安装过就安装过了吧.开始的时候我们在交互模式 (interactive prompt) 下玩玩,方法是打开终端,输入 python 后按回车.之后,终端下就会出现提示符 >>> .一开始我们可以把它当成表达式计算器来用,当我们输入一个数学表达式后,按下回车,这个表达式将被计算,计算结果将被顶

Python中字符串的修改及传参详解_python

发现问题 最近在面试的时候遇到一个题目,选择用JavaScript或者Python实现字符串反转,我选择了Python,然后写出了代码(错误的): #!/usr/bin/env python #-*-coding:utf-8-*- __author__ = 'ZhangHe' def reverse(s): l = 0 r = len(s) - 1 while l < r: s[l],s[r] = s[r],s[l] l += 1 r -= 1 return s 然后面试官问了两个问题: (1)

Python判断字符串与大小写转换

  这篇文章主要介绍了Python判断字符串与大小写转换的方法,有需要的小伙伴可以参考下. 判断字符串 ? 1 2 3 4 5 6 7 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字符都是小写 s.isupper() #所有字符都是大写 s.istitle() #所有单词都是首字母大写,像标题 s.isspace() #所有字符都是空白字符.t.n 大小写转换 ? 1 2

c++-C++版单词反转 给出一个英语句子,希望你把句子里的单词顺序都翻转过来

问题描述 C++版单词反转 给出一个英语句子,希望你把句子里的单词顺序都翻转过来 题目描述 Description给出一个英语句子,希望你把句子里的单词顺序都翻转过来 输入描述 Input Description输入包括一个英语句子. 输出描述 Output Description按单词的顺序把单词倒序输出 样例输入 Sample InputI love you 样例输出 Sample Outputyou love I 数据范围及提示 Data Size & Hint简单的字符串操作 解决方案