为了账号安全,请及时绑定邮箱和手机立即绑定

提取后反向打印字符串

提取后反向打印字符串

qq_花开花谢_0 2023-12-12 15:09:10
我正在尝试创建一个程序,其中用户输入包含两个“!”的语句 围绕着一根绳子。(例如:大家好!这是一个测试!再见。)我要抓住两个感叹号内的字符串,然后逐个字母地反向打印它。 我已经能够找到包含该语句的起点和终点,但是我在创建一个索引来userstring反向循环并打印我的变量时遇到困难。test = input('Enter a string with two "!" surrounding portion of the string:')expoint = test.find('!')     #print (expoint)twoexpoint = test.find('!', expoint+1)     #print (twoexpoint)userstring = test[expoint+1 : twoexpoint]     #print(userstring)number = 0while number < len(userstring) :    letter = [twoexpoint - 1]    print (letter)    number += 1
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

twoexpoint - 1是您需要的字符串相对于输入字符串的最后一个索引。所以你需要的是从该索引开始并减少。在你的 while 循环中:

letter = test[twoexpoint- number - 1]

每次增加迭代number都会减少索引并反转字符串。

但这样你实际上并没有使用userstring你已经找到的(除了长度......)。不用关心索引,只需反转userstring

for letter in userstring[::-1]:
    print(letter)


查看完整回答
反对 回复 2023-12-12
?
智慧大石

TA贡献1946条经验 获得超3个赞

说明我们使用正则表达式来查找模式,然后循环查找每个出现的情况,并用反转的字符串替换该出现的情况。我们可以在 python 中反转字符串mystring[::-1](也适用于列表)

import re # I recommend using regex


def reverse_string(a):

    matches = re.findall(r'\!(.*?)\!', a)

    for match in matches:

        print("Match found", match)

        print("Match reversed", match[::-1])

        for i in match[::-1]:

            print(i)


In [3]: reverse_string('test test !test! !123asd!')

Match found test

Match reversed tset

t

s

e

t

Match found 123asd

Match reversed dsa321

d

s

a

3

2

1


查看完整回答
反对 回复 2023-12-12
?
桃花长相依

TA贡献1860条经验 获得超8个赞

你把事情想得太复杂了。不要理会索引,只需使用reversed()onuserstring循环遍历字符本身:

userstring = test[expoint+1:twoexpoint]

for letter in reversed(userstring):

    print(letter)

或者使用反向切片:


userstring = test[twoexpoint-1:expoint:-1]

for letter in userstring:

    print(letter)


查看完整回答
反对 回复 2023-12-12
  • 3 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信