鱼C论坛

 找回密码
 立即注册
查看: 2394|回复: 10

[已解决]Python翻转字符串

[复制链接]
发表于 2020-11-22 08:57:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实在想不起来怎么做,求思路或代码
《七律 人民解放军占领南京》,全文如下:
s = "钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"
请输出全文的翻转形式,例如:
人间正道是沧桑,天若有情天亦老。
不可沽名学霸王,宜将剩勇追穷寇。
天翻地覆慨而慷,虎踞龙盘今胜昔。
百万雄师过大江,钟山风雨起苍黄
最佳答案
2020-11-23 09:14:44
本帖最后由 逃兵 于 2020-11-23 09:17 编辑
s = "钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"


s = s.replace("。",",")
s_list = s.split(",")[:-1]
s_list.reverse()

for i in range(len(s_list)):
    if i%2:
        print(s_list[i],end='。\n')
    else:
        print(s_list[i],end=',')

输出
人间正道是沧桑,天若有情天亦老。
不可沽名学霸王,宜将剩勇追穷寇。
天翻地覆慨而慷,虎踞龙盘今胜昔。
百万雄师过大江,钟山风雨起苍黄。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-22 19:00:06 | 显示全部楼层
可以把内容加入列表,利用list.reverse()方法反向列表中的元素即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 23:27:23 | 显示全部楼层
直接把內容加入列表,再用reverse()的話會以每個字進行反轉,所以要把每行隔開加入列表,詩句每行有固定字數,用len()計算總字數,之後計算要把詩句分成多少行,用2個FOR循環把整篇詩分段加入列表(第一個循環是總循環次數,第2個循環是計算多少個字組成加入列表),還有用IF把標點換了,之後得出以句組成的列表,最後用reverse()打印出來
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 23:29:04 | 显示全部楼层
可是如果不是格式固定我暫時沒想到方法,剛學PYTHON幾天,看有沒有大佬提供一些思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-22 23:37:22 | 显示全部楼层
x = "钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"
print(x)
row_words = input("每行幾個字?:")
print("現在我們把詩反過來諗~~")
row_words = int(row_words) + 1
time_0 = int(len(x) / row_words)
y = list(x)
new_y = []
nx = ""
for time in range(time_0) :
    for row_word in range(row_words) :
        word = y.pop(0)
        if word == "。" :
            word = ","
        elif word == "," :
            word = "。"
        nx += word
    new_y.append(nx)
    nx = ""

new_y.reverse()
for reverses_word in new_y :
    print(reverses_word, end="")

评分

参与人数 1荣誉 +3 鱼币 +5 贡献 +3 收起 理由
巴巴鲁 + 3 + 5 + 3 你的也很强

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 07:15:56 | 显示全部楼层
Hu-33-1215 发表于 2020-11-22 23:27
直接把內容加入列表,再用reverse()的話會以每個字進行反轉,所以要把每行隔開加入列表,詩句每行有固定字 ...

我想了想这样行不行?不过不知道为什么分隔后会出现一个空格在列表里,很烦
s="钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"
s = s.replace("。",",")
s_list = s.split(",")
s_list.reverse()
length = len(s_list)

for i in range(1, length, 2):
    print(s_list[i], end = ',')
    print(s_list[i+1], end = '。')
    print()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 09:03:05 | 显示全部楼层
巴巴鲁 发表于 2020-11-23 07:15
我想了想这样行不行?不过不知道为什么分隔后会出现一个空格在列表里,很烦

D:\wp\wp>py app3.py
人间正道是沧桑,天若有情天亦老。
不可沽名学霸王,宜将剩勇追穷寇。
天翻地覆慨而慷,虎踞龙盘今胜昔。
百万雄师过大江,钟山风雨起苍黄。

效果不是挺好的嘛   有啥问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 09:14:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 逃兵 于 2020-11-23 09:17 编辑
s = "钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"


s = s.replace("。",",")
s_list = s.split(",")[:-1]
s_list.reverse()

for i in range(len(s_list)):
    if i%2:
        print(s_list[i],end='。\n')
    else:
        print(s_list[i],end=',')

输出
人间正道是沧桑,天若有情天亦老。
不可沽名学霸王,宜将剩勇追穷寇。
天翻地覆慨而慷,虎踞龙盘今胜昔。
百万雄师过大江,钟山风雨起苍黄。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 12:21:10 | 显示全部楼层
wp231957 发表于 2020-11-23 09:03
D:\wp\wp>py app3.py
人间正道是沧桑,天若有情天亦老。
不可沽名学霸王,宜将剩勇追穷寇。

列表里会有个空格,反转后在第一个元素里,所以要从第二个元素开始遍历
不知道什么原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 14:18:42 | 显示全部楼层
巴巴鲁 发表于 2020-11-23 12:21
列表里会有个空格,反转后在第一个元素里,所以要从第二个元素开始遍历
不知道什么原因

你切割字符串的时候,字符串的最后一个元素是逗号,逗号的右侧又没有值,所以多切出一个空
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 16:00:29 | 显示全部楼层
逃兵 发表于 2020-11-23 14:18
你切割字符串的时候,字符串的最后一个元素是逗号,逗号的右侧又没有值,所以多切出一个空

哦,理解你代码第八行的意思了,强
可以这么消
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 06:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表