使用While循环在单行上打印?

时间:2013-12-10 19:41:00

标签: python printing while-loop python-3.3 inverse

我有一个问题,我一直试图克服。首先,这是我的代码:

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循环。它工作正常,但打印一个字符在另一个字符下的句子的反转。有没有办法把它全部放在一行?

4 个答案:

答案 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以获取更多信息