python while结束后怎么写下一行_关于python:用while循环在一行上打印?

本问题已经有最佳答案,请猛点这里访问。

有一段时间我一直在努力克服一个问题。首先,我的代码是:

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循环。它可以很好地工作,但是打印句子的倒数,一个字符接一个字符。有没有办法把所有的事情都放在一条线上?

quote[::-1]将比while loop()更容易反转字符串。

这被称为扩展切片表示法。切片符号有三个部分,"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您的意思是一个切片(而不是从index-1开始,这将引发indexerror)。

a b c d e f g

7 6 5 4 3 2 1 0

所以它像这样放置索引,并从零开始计数,直到索引结束(字符串的开始)。

明白了吗?

如何在我的程序中使用它?

@raihaan tech-完全删除while循环,只需执行以下操作:print("In Reverse order:", quote[::-1])

谢谢您!!!!它起作用了!!!!

我太明白了!

@作为一个旁白,如果需要反转一个列表(或其他iterable),python有一个名为reversed()的内置函数,它返回一个生成反转迭代的生成器。list(reversed(iter_goes_here))是一个颠倒顺序的元素列表,不管您传递的是什么,它都是可以传递的。for v in reversed(iter_goes_here): print(v)将循环并打印每个值等。您不能做的是print(reversed(iter_goes_here)),因为它是一个生成器而不是列表本身。

如果不希望print附加新行,请指定一个空的end,如下所示:

print("A partial line", end='')

print("... continued!")

查看文档以了解更多信息

谢谢!这很有用!

你可以使用sys.stdout.write(quote[reverse])。

我尝试过使用它,但这是一个while循环,我不知道如何在这种情况下使用它。

发生了什么事?你忘了把import sys放在模块的顶部吗?

不完全是这样。不管怎样,我不太擅长使用sys,但我似乎无法将它直接应用到while循环所在的位置。

尝试这些更改:

print("In Reverse order:")

charSet =""

while reverse >= 0:

charSet = charSet + quote[reverse]

print(charSet)

你的代码太棒了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值