- 格式
```python
while 表达式:
语句块
```
> 执行流程:当程序执行到while语句时,首先判断表达式的真假。若表达式的值为真,则执行缩进的语句块,然后返回while,继续判断表达式的真假,直到表达式的值为假;若表达式的值为假,则直接跳过语句块,执行后面的代码。
- 说明:
- 表达式:也叫循环条件
- 语句块:也叫循环体
- 死循环:循环条件一直成立
- break:跳出循环
- continue:结束本次循环,进入下次循环
- else:缩进的语句块,在循环正常退出时执行,break退出时不执行
- 说明:for-in也是一种循环,经常用于遍历可迭代的对象,如:字符串、列表、元组、字典等
- 格式
```python
for x in y:
语句块
```
> 执行流程:x依次表示y中的一个元素,遍历结束循环就结束了。
- 可迭代对象:可以迭代遍历的对象,如:列表、元组、字典
- range函数
```python
print(range(2, 10))
for i in range(10):
print(i)
print(list(range(10)))
```
- 列表生成式
```python
print([i for i in range(1, 11) if i % 2 == 0])
```
- 循环能否嵌套?
- 答:能
- 循环嵌套示例
```python
n = int(input('请输入一个整数:'))
for i in range(n):
for j in range(i+1):
print(j+1, end=' ')
print()
```
> 练习:使用while实现上面的功能
>
> ```python
>
> n = int(input('请输入一个整数:'))
> i = 1
> while i<= n:
> i +=1
> print([s for s in range(1, i)])
> ```
>
>
- 列表元素排序
- 冒泡排序
```python
lt = [1, 5, 7, 3, 2]
n = len(lt)
for i in range(n-1):
for j in range(n-i-1):
if lt[j] > lt[j+1]:
lt[j], lt[j+1] = lt[j+1], lt[j]
print(lt)
```
- 选择排序
```
思想:先取出第一个元素,然后依次与后面所有的元素比较,不合适,发生交换。
示例:lt = [3, 5, 2, 8, 6, 4]
第一轮:2, 5, 3, 8, 6, 4
第二轮:2,3,5, 8, 6, 4
第三轮:2,3, 4, 8, 6, 5
```
> 练习:实现选择排序算法
>
> ```python
>
> lt = [8,5,6,7,2,1,3]
> n = len(lt)
> for i in range(0,n-1):
> for j in range(i+1,n):
> if lt[i] > lt[j]:
> lt[i],lt[j] =lt[j], lt[i]
> print(lt)
> ```
>
>
- 拼接与切割
```python
s = 'I love you more than I can say'
ret = s.rsplit(' ', maxsplit=1)
print(ret)
s = 'Hello\nworld'
print(s.splitlines())
s = 'I love you more than I can say'
ret = s.split()
s2 = '*'.join(ret)
print(s2)
```
- 查找统计判断
```python
s = 'Hi buddy, if you have something to say, than say; if you have nothing to say, than go!'
ret = s.endswith('go')
print(ret)
```
- 转换及替换
```python
s = 'hello world!'
print(s.upper())
print(s.lower())
print(s.swapcase())
print(s.capitalize())
print(s.title())
print(s.replace('l', 'L'))
```
- 类型判断
```python
s = 'Hello'
print(s.isupper())
print(s.islower())
print(s.istitle())
print(s.isdecimal())
print(s.isalpha())
s = '123'
print(s.isalnum())
```
- 计算1~100之间所有整数的和
- ```python
i = 1
sum = 0
while i<=100:
sum +=i
i +=1
print('1+2+3+...+100=',sum)
i = 0
lt =[]
while i <=100:
lt.append(i)
i+=1
print(sum(lt))
```
- 打印字符A~Z
- ```python
a = 65
b =90
for i in range(a,b+1):
print(chr(i))
```
- 循环输入10个字符,大写转小写,小写转大写,其它字符不变,然后输出
- ```python
lt = 'hello WorLd!'
i = 0
a = len(lt)
while i<a:
b = lt[i]
if b.islower():
print(b.upper())
else:
print(b.lower())
i +=1
```
- 将12345转换为54321
- ```python
while a :
last = a%10
a=
ret = ret*10 + last
print(ret)
```
- 将12345转换为'12345',不要使用str
- ```python
a = 12345
b = '%d' % a
print(b, type(b))
```
将‘12345’转化成54321
```python
a = '12345'
j = 0
set = 0
for i in a:
j = j*10 + (ord(i)-ord('0'))
while j :
j , last = divmod(j,10)
set = last + set * 10
print(set)
```
- 将'12345'转换为12345,不要使用int
- ```python
s = "12345"
a = 0
for x in s :
a = a*10 +( ord(x)-ord("0"))
print(a)
```
- 遍历列表,打印:`我叫name,今年age岁,家住dizhi,电话phone`
- ```python
lt = [
{'name':'小王', 'age':18, 'info':[('phone', '123'), ('dizhi', '广州')]},
{'name':'小芳', 'age':19, 'info':[('phone', '789'), ('dizhi', '深圳')]},
{'name':'小杜', 'age':22, 'info':[('phone', '567'), ('dizhi', '北京')]},
{'name':'小孟', 'age':28, 'info':[('phone', '000'), ('dizhi', '上海')]},
{'name':'小乔', 'age':26, 'info':[('phone', '111'), ('dizhi', '河南')]},
]
for j in range(len(lt)):
print('我叫{},今年{}岁,家住{},电话{}'.format(lt[j].get('name'),lt[j].get('age'),lt[j].get('info')[1][1],lt[j].get('info')[0][1]))
```
```python
lt = [
{'name':'小王', 'age':18, 'info':[('phone', '123'), ('dizhi', '广州')]},
{'name':'小芳', 'age':19, 'info':[('phone', '789'), ('dizhi', '深圳')]},
{'name':'小杜', 'age':22, 'info':[('phone', '567'), ('dizhi', '北京')]},
{'name':'小孟', 'age':28, 'info':[('phone', '000'), ('dizhi', '上海')]},
{'name':'小乔', 'age':26, 'info':[('phone', '111'), ('dizhi', '河南')]},
]
```
- 打印九九乘法表
- ```python
for i in range (1,10):
for j in range(1,i+1):
print("%d*%d=%d" % (i,j,i*j),end=" ")
print("")
i = 1
while i < 10:
for j in range (i, 10):
print("%s×%s=%s"%(i,j,i*j),end=" ")
print()
i+=1
```
- 从终端输入两个整数m和n,打印m*n的表格,如:2,5,打印如下图形:
- ```python
m = int(input("请输入一个数字:"))
n = int(input("请输入一个数字:"))
for x in range(1,m+1):
for y in range(1,n+1):
print("{}".format((x-1)*n+y),end=" ")
print()
n = int(input("请输入一个数字:"))
s = m*n
for x in range(s):
if x%n == 0:
print()
print(x+1, end=" ")
```
```
1 2 3 4 5
6 7 8 9 10
```