python快速入门【三】-----For 循环、While 循环
python入门合集:
python快速入门【三】-----For 循环、While 循环
For 循环
For循环是迭代对象元素的常用方法(在第一个示例中,列表)
具有可迭代方法的任何对象都可以在for循环中使用。
python的一个独特功能是代码块不被{} 或begin,end包围。相反,python使用缩进,块内的行必须通过制表符缩进,或相对于周围的命令缩进4个空格。
虽然这一开始可能看起来不直观,但它鼓励编写更易读的代码,随着时间的推移,你会学会喜欢它
In [1]
#取第一个列表成员(可迭代),暂称它数字(打印它)
#取列表的第二个成员(可迭代),暂时将其称为数字,等等......
for number in [23, 41, 12, 16, 7]:
print(number)
print('Hi')
23
41
12
16
7
Hi
枚举
返回一个元组,其中包含每次迭代的计数(从默认为0开始)和迭代序列获得的值:
In [2]
friends = ['steve', 'rachel', 'michael', 'adam', 'monica']
for index, friend in enumerate(friends):
print(index,friend)
0 steve
1 rachel
2 michael
3 adam
4 monica
Task
从文本中删除标点符号并将最终产品转换为列表:
On a dark desert highway, cool wind in my hair Warm smell of colitas, rising up through the air Up ahead in the distance, I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway; I heard the mission bell And I was thinking to myself, "This could be Heaven or this could be Hell" Then she lit up a candle and she showed me the way
(加州旅馆)
In [3]
text = '''On a dark desert highway, cool wind in my hair Warm smell of colitas, rising up through the air Up ahead in the distance, I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway; I heard the mission bell And I was thinking to myself, "This could be Heaven or this could be Hell" Then she lit up a candle and she showed me the way'''
In [4]
print(text)
On a dark desert highway, cool wind in my hair Warm smell of colitas, rising up through the air Up ahead in the distance, I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway; I heard the mission bell And I was thinking to myself, "This could be Heaven or this could be Hell" Then she lit up a candle and she showed me the way
基本上,任何具有可迭代方法的对象都可以在for循环中使用。即使是字符串,尽管没有可迭代的方法 - 但我们不会在这里继续。具有可迭代方法基本上意味着数据可以以列表形式呈现,其中有序地存在多个值。
In [5]
for char in '-.,;\n"\'':
text = text.replace(char,' ')
print(text)
On a dark desert highway cool wind in my hair Warm smell of colitas rising up through the air Up ahead in the distance I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway I heard the mission bell And I was thinking to myself This could be Heaven or this could be Hell Then she lit up a candle and she showed me the way
In [6]
# Split converts string to list.
# Each item in list is split on spaces
text.split(' ')[0:20]
['On',
'a',
'dark',
'desert',
'highway',
'',
'cool',
'wind',
'in',
'my',
'hair',
'Warm',
'smell',
'of',
'colitas',
'',
'rising',
'up',
'through',
'the']
In [7]
# Dont want to have non words in my list for example ''
# which in this case are things of zero length
len('')
0
In [8]
# Making new list with no empty words in it
cleaned_list = []
In [9]
for word in text.split(' '):
word_length = len(word)
if word_length > 0:
cleaned_list.append(word)
In [10]
cleaned_list[0:20]
['On',
'a',
'dark',
'desert',
'highway',
'cool',
'wind',
'in',
'my',
'hair',
'Warm',
'smell',
'of',
'colitas',
'rising',
'up',
'through',
'the',
'air',
'Up']
Continue
continue语句将转到循环的下一次迭代
continue语句用于忽略某些值,但不会中断循环
In [11]
cleaned_list = []
for word in text.split(' '):
if word == '':
continue
cleaned_list.append(word)
cleaned_list[1:20]
['a',
'dark',
'desert',
'highway',
'cool',
'wind',
'in',
'my',
'hair',
'Warm',
'smell',
'of',
'colitas',
'rising',
'up',
'through',
'the',
'air',
'Up']
Break
break语句将完全打断循环
In [12]
cleaned_list = []
In [13]
for word in text.split(' '):
if word == 'desert':
print('I found the word I was looking for')
break
cleaned_list.append(word)
cleaned_list
I found the word I was looking for
['On', 'a', 'dark']
Task (顺道介绍一下Range函数)
- 编写一个Python程序,它迭代整数从1到50(使用for循环)。对于偶数的整数,将其附加到列表even_numbers。对于奇数的整数,将其附加到奇数奇数列表中
In [14]
# Making empty lists to append even and odd numbers to.
even_numbers = []
odd_numbers = []
for number in range(1,51):
if number % 2 == 0:
even_numbers.append(number)
else:
odd_numbers.append(number)
In [15]
print("Even Numbers: ", even_numbers)
Even Numbers: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
In [16]
print("Odd Numbers: ", odd_numbers)
Odd Numbers: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
Python 2 vs Python 3 (Range函数的不同点)
python 2 xrange and python 3 range are same (resembles a generator) python 2 range生成一个list
注意: 较长的列表会很慢
更多参考: http://pythoncentral.io/pythons-range-function-explained/
While 循环
For 循环 | While 循环 |
---|---|
遍历一组对象 | 条件为false时自动终止 |
没有break也可以结束 | 使用break语句才能退出循环 |
如果我们希望循环在某个时刻结束,我们最终必须使条件为False
In [1]
# Everytime through the loop, it checks condition everytime until count is 6
# can also use a break to break out of while loop.
count = 0
while count <= 5:
print(count)
count = count + 1
0
1
2
3
4
5
break语句
使用break可以完全退出循环
In [2]
count = 0
while count <= 5:
if count == 2:
break
count += 1
print (count)
1
2
while True条件使得除非遇到break语句,否则不可能退出循环
如果您陷入无限循环,请使用计算机上的ctrl + c来强制终止
In [3]
num = 0
while True:
if num == 2:
print('Found 2')
break
num += 1
print (num)
1
2
Found 2
提醒:使用模运算符(%),它将数字左边的余数除以右边的数字
In [4]
# 1 divided by 5 is 0 remainder 1
1 % 5
1
In [5]
# 5 divided by 5 is 0 remainder 0
5 % 5
0
比较操作符 | 功能 |
---|---|
< | 小于 |
<= | 小于或等于 |
| 大于 = | 大于或等于 == | 等于 != | 不等于
In [6]
x = 1
while x % 5 != 0:
x += 1
print(x)
2
3
4
5
当我们知道要循环多少次时,Range很有用
下面例子是: 从0开始,但不包括5
In [7]
candidates = list(range(0, 5))
candidates
[0, 1, 2, 3, 4]
In [8]
while len(candidates) > 0:
first = candidates[0]
candidates.remove(first)
print(candidates)
[1, 2, 3, 4]
[2, 3, 4]
[3, 4]
[4]
[]