目录

❤  while循环

1.  语法格式

2.  while循环三要素 

3.  死循环

❤  for循环

1.  语法格式 

2.  字典利用 items 内置函数进行 for 循环

❤  range()函数

1.  语法格式

❤  breck() - 跳出整个循环

1.  语法格式:

❤  continue() - 跳出当前循环

1.  语法格式

❤  各种推导式(列表推导式、字典推导式、集合推导式)

1.  列表推导式

2.  字典推导式

3.  集合推导式

❤  双重for循环

九九乘法表

如何使用一行代码实现九九乘法表


python从小白到总裁完整教程目录:

根据条件或者次数,反复执行某段代码(循环体语句),主要包括2种格式:for循环和while循环

❤  while循环

1.  语法格式

while 条件:

    循环体(语句段)

格式说明:如果条件为真(正确),执行循环体,如果条件为假(错误),结束循环 

2.  while循环三要素 

  1. 循环变量初值
  2. 循环条件
  3. 循环变量增值
i = 1         # 循环变量初值
while i < 5:   # 循环条件
    print('HelloWorld')
    i = i + 1  # 循环变量增值        变量名 = 变量值

循环过程:

i = 1 1 < 5 True HelloWorld i = 1 + 1 i = 2 2 < 5 True HelloWorld i = 2 + 1 i = 3 3 < 5 True HelloWorld i = 3 + 1 i = 4 4 < 5 True HelloWorld i = 4 + 1 i = 5 5 < 5 False

i = 1
while i <= 5:
    name = input('请输入您的姓名:')
    i = i + 1

 输出:

请输入您的姓名:a
请输入您的姓名:c
请输入您的姓名:f
请输入您的姓名:g
请输入您的姓名:g
 

3.  死循环

一直为真:

while True:
    print('HelloWorld')

true条件:

while 1 == 1:
    print('电脑被病毒入侵,准备关机98765...')

案列:

使用while循环,循环输出列表中的数据

# 定义列表并输出
list01 = [101, 'lucy', 20, 90.5]
#          0      1     2    3     4     5
# 获取列表中元素个数
len = len(list01)
print('list01列表中元素个数:', len)
print('list01列表中的数据:', list01)
print('list01列表中的姓名:', list01[1])
i = 0   # 循环变量初值
while i < len:
    print(list01[i])
    i = i + 1

 输出:

list01列表中元素个数: 4
list01列表中的数据: [101, 'lucy', 20, 90.5]
list01列表中的姓名: lucy
101
lucy
20
90.5

 练习:

获取键盘输入的数据,赋值给变量str01,通过while循环,
循环输出str01中的字符

str01 = input('请输入您的数据:')
print('您输入的数据是:%s' % str01)
print('字符串中的某个字符:', str01[1])
len = len(str01)
print(f'字符串的长度是:{len}')
i = 0
while i < len:
    print('str01中字符分别是:',str01[i])
    i = i + 1

 输出:

请输入您的数据:python
您输入的数据是:python
字符串中的某个字符: y
字符串的长度是:6
str01中字符分别是: p
str01中字符分别是: y
str01中字符分别是: t
str01中字符分别是: h
str01中字符分别是: o
str01中字符分别是: n

❤  for循环

for循环结构,通过循环一个可迭代对象(高级数据类型),来,实现循环。

1.  语法格式 

for 循环变量 in 可迭代对象:

        循环体

格式说明:每次循环,循环变量都会的得到,可迭代对象中的一个值,然后执行循环体,当可迭代对象的值,全部取完时,循环自动结束。

可循环的高级类型: str list tuple dict set .....

str01 = 'ABCDEFG'
for s in str01:
    print(s)

 输出:

1、s = A HelloWorld 2、s = B HelloWorld 3、s = C HelloWorld .... HelloWorld 6、s = F HelloWorld 7、s = G HelloWorld

案列:

list01 = [101, 'rose', 90.5, False]
for k in list01:
    print(k)

输出:

101
rose
90.5
False

案列:

cases = [
    ['login_01', 'admin', '123456', True],
    ['login_02', 'admin', '', False],
    ['login_03', '', '123456', False]
]
for case in cases:
    case_id, uname, passwd, result = case
    print(uname)

 输出:

admin
admin

练习:

定义一个列表list01,计算每个元素的平方,使用for循环,输出结果 

 注释为前面学的知识

list01 = [9, 7, 5, 3, 1]
for v in list01:
    # print(v**2)
    # print(v*v)
    # print(v, '*', v, '=', v*v)
    # print('%d*%d=%d' % (v, v, v*v))
    print(f'{v}*{v}={v*v}')

 输出:

9*9=81
7*7=49
5*5=25
3*3=9
1*1=1

练习:

定义一个2维列表,存储用户信息(user_info),获取键盘输入的用户名和密码,存储到user_info列表中,使用for循环进行循环输入用户信息,并输出结果 

user_info = []   # 存储用户信息
for k in range(1000000):
    username = input('请输入用户名:')
    passwd = input('请输入密码:')
    # 一般情况下,用户名和密码是一对,所以采用2维列表存储
    info = [username, passwd]
    print('info', info)  # ['rose', '123']
    user_info.append(info)
    print('user_info', user_info)

 输出:

请输入用户名:rose
请输入密码:123
info ['rose', '123']
user_info [['rose', '123']]
请输入用户名:  ......

2.  字典利用 items 内置函数进行 for 循环

items() 内置函数的功能:将字典转成伪列表,每个 key 、 value 转成元组。

items() 内置函数的用法:示例如下

dict01 = {'id':101, 'name':'rose', 'age':20}
# dict01.items()  获取字典中全部的键值
for k, v in dict01.items():
    print(k, v)
# dict01.values() 获取字典中全部的值
for v1 in dict01.values():
    print(v1)

id 101
name rose
age 20
101
rose
20 

❤  range()函数

range()函数,可以生成一个整数列表

1.  语法格式

range(开始值,结束值,步长)

参数说明:

开始值:

开始值就是,列表最开始的值,默认值是0,开始值可以省略

结束值:

结束值就是,列表最后的值,生成的最大值是(结束值-1),结束值不可以省略

步长:

步长就是每次增加的值,默认值是1,可以省略

for k1 in range(10):
    # 开始值-0  结束值-10   步长-1
    print(k1)
    # 0 1 2 3 4 5 6 7 8 9
for k2 in range(2, 10):
    # 开始值-2  结束值-10   步长-1
    print(k2)
    # 2 3 4 5 6 7 8 9
for k3 in range(1, 10, 2):
    # 开始值-1  结束值-10   步长-2
    print(k3)
    # 1 3 5 7 9

练习:

输出1--100内的所有整数

for i in range(1,101):
    print(i)

输出1--100内的所有奇数

for i in range(1,101,2):
    print(i)

输出1--100内的所有偶数

for i in range(2,101,2):
    print(i)

练习:

使用for循环和range()函数,输出三角形

* *** ***** ******* *********

s1 = '*'
print(s1 * 1)
print(s1 * 3)
print(s1 * 5)
print(s1 * 7)

 来试试输出这个:

   * *** ***** ******* *********

 分析:

* 第1行 打4个空格 1个星星 *** 第2行 打3个空格 3个星星 ***** 第3行 打2个空格 5个星星 ******* 第4行 打1个空格 7个星星 ********* 第5行 打0个空格 9个星星

for n in range(1,6):
    print((5-n) * ' ' + (2*n-1) * '*')
    #       输出空格          输出*

❤  breck() - 跳出整个循环

break语句用于退出循环(while、for),可以理解为:提前结束循环,一般和if语句一起使用(建议使用for循环)。

1.  语法格式:

while 条件:

    循环体

if 条件:

break

for 循环变量 in 迭代对象:

     循环体

 if 条件:

break


 案列:

使用while循环,循环输出1--10内的整数,当数值是7时,退出循环

i = 1
while i <= 10:
    print(i)
    i = i + 1
    if i == 7:
        break

 输出:

1
2
3
4
5
6

案列:

使用for循环,循环输出1--100内的整数相加之和


 分析:

sum k1 sum = 0 k1 = 1 sum = 0 + 1 print(1) sum = 1 k1 = 2 sum = 1 + 2 print(3) sum = 3 k1 = 3 sum = 3 + 3 print(6) sum = 6 k1 = 4 sum = 6 + 4 print(10) ....

# 1+2+3+4+5+6+7+8+9+10=?
sum = 0   # 存储结果
for k1 in range(1, 101):
    sum = sum + k1
    # 按照某种规则,数值累加之和
    print(sum)
    if sum > 1024:
        break

 练习:

使用while循环,循环输出跑的圈数,当跑到第10圈时,晕倒,退出循环   一共100圈

i = 1
while i <= 100:
    print('跑第', i, '圈')
    i = i + 1
    if i == 10:
        print('晕倒...')
        break

 输出:

跑第 1 圈
跑第 2 圈
......
跑第 9 圈
晕倒...

❤  continue() - 跳出当前循环

continue语句,用于退出循环(while、for),可以理解为:结束当前循环,继续下一次循环(跳过循环),一般和if语句一起使用。

1.  语法格式

while 条件:

循环体

if 条件:

continue

for 循环变量 in 迭代对象:

  循环体

if 条件:

continue

案列:

使用while循环,循环输出1-10内的整数,不将数字4输出

i = 0
while i < 10:
    i = i + 1
    if i == 4:
        continue
    print(i)

练习:

京城举办吃包子大赛,各地大胃王,进京参赛,共计1000个包子,吃到444个的时候发现虫子(不要),先吃完获胜

print('->京城吃包子大赛<-')
i = 0
while i < 1000:
    i = i + 1
    if i == 444:
        print('发现半个虫子...扔掉')
        continue
    print(f'大胃王吃第{i}个包子')
# for k1 in range(1,1001):
#     if k1 == 444:
#         print('发现半个虫子...扔掉')
#         continue
#     print(f'大胃王吃第{k1}个包子')
print('->大胃王获胜win!<-')

❤  各种推导式(列表推导式、字典推导式、集合推导式)

1.  列表推导式

格式:

variable = [out_exp_res for out_exp in input_list if out_exp == 2]

说明:

out_exp_res:  列表生成元素表达式,可以是有返回值的函数。 for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。 if out_exp == 2:  根据条件过滤哪些值可以。


multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

扩展: 

将俩表推导式的[]改成()即可得到生成器。

multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))
#  Output: <type 'generator'>

 2.  字典推导式

字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
    k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
    for k in mcase.keys()
    if k.lower() in ['a','b']
}
print mcase_frequency
#  Output: {'a': 17, 'b': 34}

3.  集合推导式

它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: set([1, 4])

❤  双重for循环

九九乘法表

# for 循环 实现九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print('{} * {} = {}'.format(i, j, i * j), end=' ')
    print('')

输出:

1 * 1 = 1 
2 * 1 = 2 2 * 2 = 4 
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 

# while 循环 实现九九乘法表

i = 0
j = 0

while i < 9:
    i += 1
    while j < 9:
        j += 1
        print('{} * {} = {}'.format(j, i, i * j), end=' ')
        if i == j:
            j = 0
            print('')
            break

 输出是一样的

如何使用一行代码实现九九乘法表

print('\n'.join([' '.join(['{} * {} = {} '.format(item_1, item_2, item_1 * item_2) for item_2 in range(1, 10) if item_2 <= item_1]) for item_1 in range(1, 10)]))


# 利用了 列表推导式 及 列表转字符串
# 但使用这种方式的阅读性极差, 项目中绝不能使用