猿问

提取后反向打印字符串

我正在尝试创建一个程序,其中用户输入包含两个“!”的语句 围绕着一根绳子。(例如:大家好!这是一个测试!再见。)我要抓住两个感叹号内的字符串,然后逐个字母地反向打印它。 我已经能够找到包含该语句的起点和终点,但是我在创建一个索引来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 = 0

while number < len(userstring) :

    letter = [twoexpoint - 1]

    print (letter)

    number += 1


qq_花开花谢_0
浏览 151回答 3
3回答

四季花海

twoexpoint - 1是您需要的字符串相对于输入字符串的最后一个索引。所以你需要的是从该索引开始并减少。在你的 while 循环中:letter = test[twoexpoint- number - 1]每次增加迭代number都会减少索引并反转字符串。但这样你实际上并没有使用userstring你已经找到的(除了长度......)。不用关心索引,只需反转userstring:for letter in userstring[::-1]:     print(letter)

智慧大石

说明我们使用正则表达式来查找模式,然后循环查找每个出现的情况,并用反转的字符串替换该出现的情况。我们可以在 python 中反转字符串mystring[::-1](也适用于列表)import re # I recommend using regexdef 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 testMatch reversed tsettsetMatch found 123asdMatch reversed dsa321dsa321

桃花长相依

你把事情想得太复杂了。不要理会索引,只需使用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)
随时随地看视频慕课网APP

相关分类

Python
我要回答