这个例子应该得到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
这样分配的正确方法是什么?
答案 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()