有没有更好的方法来编写我的python代码

时间:2014-09-15 23:51:16

标签: python

我现在习惯于在python中编码,并且我正在尝试创建一个向后重复任何输入的代码,我不知道如何压缩代码或使其成为我不必按下后输入每个单词或短语。到目前为止,这是我的代码......

a=input()
b=input()
if(b==""):
    print(a)
c=input()
if(c==""):
    print(b,a)
d=input()
if(d==""):
    print(c,b,a)
e=input()
if(e==""):
    print(d,c,b,a)
f=input()
if(f==""):
    print(e,d,c,b,a)
g=input()
if(g==""):
    print(f,e,d,c,b,a)
h=input()
if(h==""):
    print(g,f,e,d,c,b,a)

2 个答案:

答案 0 :(得分:2)

您可以使用slice notation来撤消列表。这也适用于字符串,因为它们本质上是一个字符列表。

>>> a = raw_input('type a word')
type a word
hello

>>> a[::-1]
'olleh'

答案 1 :(得分:2)

  

我不知道如何...这样做,以便我不必在每个单词或短语后按Enter键。

所以你想在一行中输入一堆单词,然后以相反的顺序打印这些单词?

好吧,input总是读一整行。如果要将该行拆分为单独的单词,请调用split方法。所以:

>>> a = input()
Here are some words
>>> words = a.split()
>>> print(words)
['Here', 'are', 'some', 'words']

现在,如果您想以相反的顺序打印它们,可以使用reversed或切片表示法:

>>> for word in reversed(words):
...     print(word)
words
some
are
Here

如果您想要反转每个单词,可以再次使用reversedjoin,或者使用切片表示法:

>>> for word in reversed(words):
...     print(''.join(reversed(word)))
sdrow
emos
era
ereH

如果你真的 想要读取一堆行,直到你得到一个空行怎么办?

为此,将它们放在一个列表中,而不是一堆单独的变量:

>>> lines = []
>>> while True:
...     line = input()
...     if not line:
...         break
...     lines.append(line)
Here are some words
And some more

>>> lines
['Here are some words', 'And some more']

您实际上可以简化该循环,但此时可能需要稍微了解一下:

>>> lines = iter(input, '')