所以我一直试图在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
答案 0 :(得分:3)
For
循环将每个项目放在 thing 中,将该值分配给w
或number
等变量,执行操作,然后继续到下一个项目,直到它们用完为止。
让我们让你的榜样先行......
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或更高版本中所述那样工作。