我有一个问题,我一直试图克服。首先,这是我的代码:
quote = input("Enter a Sentence: ")
a = len(quote)
counter = 0
counter1 = 0
reverse = len(quote)-1
print("The Length of the sentence is",a,"characters long!")
for x in range(0,a):
if str.isspace(quote[x]) == True:
counter = counter + 1
print("The Length of the sentence is",a - counter,"characters long (excluding space...)!")
for x in range(0,a):
if str.isupper(quote[x]) == True:
counter1 = counter1 + 1
print("The number of Upper Case Characters in the sentence is",counter1,"characters!")
print("The number of Lower Case Characters in the sentence is",a-counter1,"characters long!")
print("The Upper Case Version:")
print(str.upper(quote[0:a]))
print("The Lower Case Version:")
print(str.lower(quote[0:a]))
print("In Reverse order:")
while reverse >= 0:
print(quote[reverse])
reverse = reverse - 1
此程序旨在查找有关特定句子的所有内容。但是如果你看一下底部的While
循环。它工作正常,但打印一个字符在另一个字符下的句子的反转。有没有办法把它全部放在一行?
答案 0 :(得分:2)
quote[::-1]
将比循环更容易地反转字符串:)
这称为扩展切片表示法。切片表示法有三个部分,"String"[start_index:end_index:step]
>>> "abcdefg"[0:2]
'ab'
>>> "abcdefg"[2:3]
'c'
>>> "abcdefg"[::2]
'aceg'
请记住,索引出现在字母之前,所以:
a b c d e f g
0 1 2 3 4 5 6 7
如果您对[0:2]
进行切片,那么您将获得:
|a b|c d e f g
0 1 2 3 4 5 6
如果您对[2:3]
进行切片:
a b|c|d e f g
0 1 2 3 4 5 6 7
并且切片表示法的最后一位是每个索引采取的步数。在我的测试用例中,我使用了“2”,这意味着它只会抛出一个索引,每隔一个数字:
a b c d e f g
0 1 2 3
使用否定切片作为问题的答案,它会向后而不是向前,从结束而不是从开头开始。你需要前两个冒号来显示Python你的意思是一个切片(而不是从索引-1开始,这将抛出IndexError)。
a b c d e f g
7 6 5 4 3 2 1 0
所以它像这样放置索引,并从零开始计数直到索引结束(字符串的开头)。
明白了吗?
答案 1 :(得分:0)
尝试以下更改:
print("In Reverse order:")
charSet = ""
while reverse >= 0:
charSet = charSet + quote[reverse]
print(charSet)
答案 2 :(得分:0)
您可以使用sys.stdout.write(quote[reverse])
。
答案 3 :(得分:0)
如果您不希望print
附加换行符,请指定一个空的end
,如下所示:
print("A partial line", end='')
print("... continued!")
请查看docs以获取更多信息