无法理解循环Python

时间:2013-10-08 20:36:38

标签: python loops for-loop

所以我一直试图在python内部寻找循环,但我无法理解它们是如何工作的。我正在尝试创建一个for循环,它将遍历一个数字列表并将它们全部加在一起,但我真的很难理解语法的工作原理。

据我所知,语法是:

for w in words:
    print w, len(w)

有人可以解释这个迭代变量是如何工作的(w)并且可能使用数字列表的例子吗?

我试过了,但我觉得我错了。

numbers = raw_input("> ")
addition = 0
for number in numbers:
    addition = addition + number
print addition

5 个答案:

答案 0 :(得分:3)

For循环将每个项目放在 thing 中,将该值分配给wnumber等变量,执行操作,然后继续到下一个项目,直到它们用完为止。

让我们让你的榜样先行......

numberstring = raw_input("> ")  # expect a string like "1 2.0 4 100"
addition = 0
numberlist = numberstring.split(" ") # convert the chars into a list of "words"
for number in numberlist:
    addition = addition + float(number)
print addition

如果不使用.split()转换到列表,您的循环将遍历字符串的每个字母,将其解释为字母而不是数字。如果不将这些单词转换为数字(使用float()),它甚至可以将字符串重新添加到一起(除非在这种情况下已经初始化为零)。

列表混淆的一个原因是:变量的名称无关紧要。如果你说for letter in myvar:它不会强制程序选择字母。它只需要下一个项目并将该值赋给变量letter。在Python中,这个项目可以是单词,数字等的列表,或者如果给定一个字符串,它将把字符作为项目。

设想它的另一种方法是你有一个装满物品的购物篮,收银员一次循环一个:

for eachitem in mybasket: 
    # add item to total
    # go to next item.

如果你递给他们一袋苹果并要求他们穿过它,他们就会把每个苹果取出来,但是如果你给他们一个篮子,他们会把这个包拿出来作为一个项目...

答案 1 :(得分:2)

好吧,一个小型的控制台会议应该清除它。简单来说,Python循环遍历iterable对象。现在这是什么意思。这意味着像字符串,如列表或数组。

>>> numbers = [1, 2, 3, 4, 5]
>>> for n in numbers: print n
1
2
3
4
5

基本上,它会遍历它可以循环的任何东西。这是另一个例子:

>>> my_happy_string = "cheese"
>>> for c in my_happy_string: print c
c
h
e
e
s
e

以下是一个包​​含单词列表的示例:

>>> list_of_words = ["hello", "cat", "world", "mouse"]
>>> for word in list_of_words: print word
hello
cat
world
mouse

基本上,python需要它可以循环的对象来创建for循环,所以如果你想要一个从0开始并以10结束的for循环,你会做这样的事情:

>>> for i in range(0, 10): print i
0
1
2
3
4
5
6
7
8
9

让我们看看range函数返回的内容:

>>> range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

基本上,它只返回一个列表。因此,简单来说,您需要一个列表。从技术上讲,字符串是粘在一起的字符列表。

希望有所帮助。

答案 2 :(得分:1)

for循环处理iterables的对象(能够一次返回一个对象的对象)。字符串是可迭代的

>>> for c in "this is iterable":
...   print c + " ",
...
t  h  i  s     i  s     i  t  e  r  a  b  l  e

但是数字不是。

>>> for x in 3:
...   print "this is not"
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

为了迭代一系列数字,python为你提供了一个很好的生成器函数,你猜对了,range在Python 2.x中返回一个列表。

>>> for x in range(3):
...   print x
...
0
1
2

答案 3 :(得分:0)

你拥有的更像是foreach循环。

也许是这样的:

input = raw_input("> ") #separate with spaces
sum = 0
numbers = [int(n) for n in input.split()]
for number in numbers:
    sum = sum + number
print sum

答案 4 :(得分:0)

有两种for循环。

你习惯的可能是:

sum = 0
for i in range(0,10):
    sum += 1
#prints 9

您质疑的语法是设置表示法。它表示“对于每个成员单词w”,打印w和w的长度。在python 2.7及更低版本中,print可以用作要打印多个内容的语句,例如,print w, len(w)打印单词w及其长度。这不会像python 3或更高版本中所述那样工作。