在while循环中请求用户输入

时间:2016-08-28 23:55:48

标签: python-2.7

这个例子应该得到5个单词,然后以相反的顺序打印它们。

这就是我的尝试:

n = 5
while n > 0:
    print "tell me word", n
    word(n) = raw_input()
    n = n - 1
print
r = 1
while r < 6:
    print word(r)
    r = r + 1

这样分配的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用列表执行此操作。

words = []

Python不允许使用以前未分配的索引进行分配,因此您需要调用append方法:

n = 5
words = []
while n > 0:
    words.append(raw_input('Tell me a word: '))
    n -= 1

注意我可以使用raw_input的第一个参数来打印提示,因此不需要单独执行此操作。您还可以使用更快-=来递减和重新分配n

while循环在这里是一种不寻常的选择,尽管它有效。使用Python内置的for函数,使用range循环可以让您感觉更好。

for n in range(5):
    words.append(raw_input('Tell me a word: '))

一旦你这样做,你甚至可以将它缩短为列表理解并立即分配列表:

words = [raw_input('Tell me a word: ') for n in range(5)]

一旦您获得了列表,就可以很容易地将其撤消:

print list(reversed(words))

要按照您的尝试一次打印一个(每行一个),您将遍历列表:

for word in reversed(words):
    print word

如果你认为它们是空格分隔的,那么Python 2会使用一种黑客方式:使用尾随逗号进行打印。

for word in reversed(words):
    print word,  # note the comma!

我个人觉得这里的Python 3版本更具可读性。您可以通过在文件顶部执行from __future__ import print_function来使用它:

for word in reversed(words):
    print(word, end=' ')

请注意,如果你这样做(1.)它必须在你的文件的顶部,并且(2.)所有对print的调用都需要括号(因为它是一个功能)现在)。

完整脚本示例(Python 2):

words = [raw_input('Tell me a word: ') for n in range(5)]
for word in reversed(words):
    print word,

PS - 如果您只是学习Python,为什么不使用Python 3?

words = [input('Tell me a word: ') for n in range(5)]
for word in reversed(words):
    print(word, end=' ')
print()