循环语句常被用来执行一些需要反复执行的代码
在python中我们循环的语句有 while循环和for循环,其中while和for的循环各自的用法和用途有一定的区别
while 循环条件:
循环体
- while :命令
循环条件: while循环条件 布尔类型(True Flase) 当循环为True时继续循环
当条件为Flase时则中断循环 其中条件判断语句有 <, >, ==, <=, >=, !=等等
循环体 :
for 迭代的变量 in 迭代的对象
循环体
- for :命令
- 迭代变量 :迭代的变量是根据迭代的对象来确定范围的 也可以自定义初始的范围
- 迭代的对象 :迭代的变量可以是有序的列表 也可以是用range函数自定义范围
- 循环体 :
range (初始值,最终值,步长)
简单来说range函数就是设定一个值的范围(前闭后开)同时规定他的步长值
- 初始值:从用户设定的值开始,默认为0为初始值
- 最终值:表示用户生成的最多数字但不包括此数字
- 步长:指的是初始值于最终值每一次执行的差值
- 列如:
x = range(1,20,3) for i in x: print(i,end=" ") 1 4 7 10 13 16 19
break命令
break命令用于结束的当前的循环体(注意只能跳出当前的循环体并不能跳出嵌套的循环体)
continue命令
continue命令用于结束当前的循环并且开始下一次的循环(注意continue是结束当前循环并不会跳出循环语句而break是直接跳出循环体)
#求1-100的和
i = 1
sum = 0
while i <= 100:
sum += i
i += 1
print(sum)
#死循环
while True:
print("循环体")
#break的使用
i = 10
while True:
if i == 100:
break
i += 10
print(i)
# continue的使用
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i,end=" ")
else:
print("当条件不在成立时我们也可以再运行一次代码")
1 3 5 7 9 当条件不在成立时我们也可以再运行一次代码
for i in range(0,6,1):
if i == 4:
break
print(i,end=" ")
0 1 2 3
for i in range(1,5,1):
if i == 4 or i == 2:
continue
print(i,end=" ")
1 3
# for遍历字符串
str = "abcdef"
for i in str:
print(i,end=" ")
print()
#for循环遍历列表
ls = [1,3,4,6,8,2]
for i in ls:
print(i,end=" ")
print()
#使用range函数确定数值范围
for i in range(1,10,2):
print(i,end=" ")
else:
print("当循环执行完后执行的语句,for使用break语句跳出循环时不执行此语句")
for i in range(1,10,2):
pass #pass 当写了无内容语句时 可以用pass语句来代替循环体 从而不报错
a b c d e f
1 3 4 6 8 2
1 3 5 7 9
使用for和while循环时可以根据具体的需求互相嵌套 列如在for循环中嵌套while 在while循环中嵌套for
嵌套循环是指在外层循环一次内层循环所有循环如此反复
for i in range(1,5,1):
for i in range(0,i,1):
print(i,end=" ")
print()
0
0 1
0 1 2
0 1 2 3
for i in range(0,3,1):
while i < 3:
print(f"第{i}层循环",end=" ")
i += 1
print()
第0层循环 第1层循环 第2层循环
第1层循环 第2层循环
第2层循环
n = int(input("请输入你要打印的层数:"))
for x in range(1,n+1,1):
print("\t" * (n - x),end="")
for i in range(0,x,1):
print(f"{2 ** i}\t",end="")
for j in range(x - 2, -1,-1):
print(f"{2 ** j}\t", end="")
print()
num = int(input("请输入十进制数:"))
list = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
list1 = []
str = ''
while True:
if num < 16 :
list1.append(list[num])
break
while True:
if num >= 16:
num1 = int(num % 16)
num2 = int(num / 16)
num = num2
list1.append(list[num1])
if num2 < 16:
list1.append(list[num2])
break
break
for i in range(len(list1), 0, -1):
str += list1[i-1]
print(str)
#print(list1[::-1]
# 计数查找
ls = [1,5,4,7,8,3,4,5] #设定一个列表
ls1 = [] #设立一空列表
num = max(ls)-min(ls)+1 #统计列表的数字的范围
# print(num)
offset = min(ls) #设定偏移量
for i in range(0,num): #循环列表统计ls列表的范围并赋值为0
ls1.insert(i,0)
# print(ls1)
for i in range(len(ls)): #对ls列表的元素计数并且赋值到ls1
ls1[ls[i]-offset] += 1
# print(ls1)
for i in range(len(ls)): #将列表ls排序后输出
# print(i,end=" ")
for j in range(0,ls1[i]):
print(i+offset,end=" ")
# #二分查找 求出列表的下标范围 并且赋值 利用代码算出中间值 并和要查找的数字比较大小 从而不断缩小范围
n = int(input("请输入你要查找的数字"))
ls = [1,4,6,7,8,9,10,11,14,16]
left = 0
right = len(ls)-1
while left <= right:
mind = (right + left) // 2 # 计算中间值的下标
if n > ls[mind]: # 比较大小
left = mind + 1
if n < ls[mind]:
right = mind - 1
if n == ls[mind]: #相等就输出并且退出循环
print(f"你要查找的数字下标是:{mind}")
break
else:
print("你所查找的数字不存在")