Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环)。
While 循环
语法格式为:
while 判断条件(condition):
执行语句(statements)……
break 语句:在语句块执行过程中终止循环,并且跳出整个循环。
continue 语句:在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass 语句 :是空语句,是为了保持程序结构的完整性。
Python 编程中 if 语句用于控制程序的执行
语法格式为:
if 判断条件:
执行语句……
else:
执行语句……
示例:
#while循环用法
command = input("请输入口令:")
while command != 'exit':
print(f'输入的命令是{command}')
command = input("请输入口令:")
while True:
command = input("请输入口令:")
if command == 'exit':
break
print(f'输入的命令是:{command}')
print('退出while')
#return 则会从函数里面立即返回, 函数体内的后续任何代码都不执行了
def inputCommand():
while True:
command = input("请输入口令:")
if command == 'exit':
return
print(f'输入的命令是:{command}')
print('退出while')
inputCommand()
# continue 只是当前这次循环结束,就是这次循环 continue 后面的代码不执行了, 后续的循环还要继续进行。
# 而break 是结束整个循环
while True:
command = input("请输入口令:")
if command == 'exit':
break
if command == 'aaa':
continue
print(f'输入的命令是:{command}')
print('退出while')
#while 循环打印出 列表中所有的元素
studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']
index = 0
while index < len(studentAges):
currentStu = studentAges[index]
print(currentStu)
index+=1
for循环
语法格式为:
for iterating_var in sequence:
statements(s)
示例:
list1 = [2,4,5,1,5,7,9]
list2 = [num**2 for num in list1] #列表推导式
print(list2) #[4, 16, 25, 1, 25, 49, 81]
list3 = [2,4,5,1,5,7,9]
list4 =[]
for num in list3:
list4.append(num**2)
print(list4) #[4, 16, 25, 1, 25, 49, 81]
#让 list1中每员大将和list2中的每员大将 都互相厮杀一次,打印出 A 大战 B。
list5 = ['关羽','张飞','赵云','马超','黄忠']
list6 = ['典韦','许褚','张辽','夏侯惇','夏侯渊']
for l in list5:
for i in list6:
print(f'{l}大战{i}')
#分别打印出学生的年龄和姓名
for student in range(len(studentAges)):
# print(studentAges[student])
student_info = studentAges[student].split(':')
print(f'学生年龄为:{student_info[-1]},姓名为:{student_info[0]}')
#找出列表中年龄大于17岁的学员,打印出他们在列表中的索引
for index,student in enumerate(studentAges):
if int(student.split(':')[-1])>17:
print(f'年龄大于17岁的学员在列表中的索引:{index}')
#打印出50-100的数字
for num in range(50,101):
print(num)
#打印出50-100的数字,每次增加5
for num in range(50,101,5):
print(num)
#冒泡排序的三种实现方法
def bubbleSort(nums):
for i in range(len(nums)-1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(nums)-i-1): # j为列表下标
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return nums
nums = [5,2,45,6,8,2,1]
print(bubbleSort(nums))
#实现思路: 使用双重for循环,内层变量为i, 外层为j,在内层循环中不断的比较相邻的两个值(i, i+1)的大小,
# 如果i+1的值大于i的值,交换两者位置,每循环一次,外层的j增加1,等到j等于n-1的时候,结束循环
arr = [7, 4, 3, 67, 34, 1, 8]
def bubble_sort(arr):
n = len(arr)
for j in range(0, n - 1):
for i in range(0, n - 1 - j):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
bubble_sort(arr)
print(arr) # [1, 3, 4, 7, 8, 34, 67]
# 关键点其实在双重for循环变量的配置,我们来分析一下
# 第一次循环: j = 0, i~n-2 range(0, n-1)
# 第二次循环: j = 1, i~n-3 range(0, n-1-1)
# 第三次循环: j = 2, i~n-4 range(0, n-1-1-1)
# —> range(0, n-1-j)
#
#如果我们输入的本来就是一个有序序列,其实只需要一次循环就够了,所以我们需要针对特殊情况进行优化
def bubble_sort3(arr):
for j in range(len(arr)-1, 0, -1):
count = 0
for i in range(0, j):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
count += 1
if count == 0:
return
bubble_sort3(arr)
print(arr) # [1, 3, 4, 7, 8, 34, 67]