循环结构是计算机语言中非常神奇的结构,因为我们会把很对重复的、流水线的活儿交给他去完成。python中有两种循环结构for......in循环,还有while。
如果我们已经知道循环执行的次数,也可以是要对一个容器进行迭代,建议使用for......in循环,例1-100进行求和。
sum = 0
for i in range(101):
sum = sum + i
print(sum)
range(101)是构造i的一个取值范围,可以打印range(101),当我们使用循环的时候就会把1-100的值依次赋值给循环变量x,当然range非常灵活。
range语法:
range(start, stop[, step])
start 开始计数标识,range(5)等于range(0,5),默认左开右关(记起老夫学得还算可以的高中数学)。
stop 计数到stop结束,不包括stop。记住左开右关就可以了。
step 步长,默认为1。步长其实就是数字间间隔大小。range(5)等于range(0,5,1)。
使用python如何打印100以内所有偶数的和呢?
sum = 0
for i in range(0,101,2):
sum += i
print(sum)
如果我们不知道具体的循环次数,建议使用while循环。while循环通过产生或转换出bool值的表达式来控制循环。判断表达式的值为True时继续执行,为False时则结束循环。简单来说就是while循环可以设定循环基数,在代码块内编写循环规则,完成需要循环的内容。
# 打印1-100的和
sum = 0
i = 100
while i > 0:
sum += i
i -= 1
print(sum)
理解原理后我们来一个较复杂一点的while循环,结合前面所学的判断,完成一个随机猜数的小游戏,请看。
# 从1-100随意产生一个数跟我们输入的一个数去对比,给出提示信息(偏大、偏小或者猜对了),并输出最终猜对后的次数。
import random
RanNum = random.randint(1,100)
counter = 0
while true:
counter += 1
number = int(input('请输入:'))
if number > RanNum:
print('偏大')
elif number < RanNum:
print('偏小')
else:
print('猜对了呢!!!!')
break
print('你在猜了%d后,成功猜对了' %(counter))
if counter > 8:
print('wocao,妈妈炒的黄花菜都凉透了')
在上面的循环实例中我们使用的东西,对于新手来说可能面对着一个不小的挑战,我们用到了循环嵌套,还有终止循环break,学习的时候很多资源大家都能在网络资源中寻找到,排除天赋这个神奇的东西为什么有很多童鞋学的快呢?很大一部分原因在于梳理、回顾、然后尝试尝试再尝试。
和分支判断一样循环也能进行多重嵌套,也就是说循环中还能接着循环。
# 我们来输出新手必需玩的99乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%d * %d = %d' %(i,j,i*j),'\t') # '\t' 换行
print(' ')
# 使用while循环打印99乘法表
i = 1
j = 1
while i < 10:
while j <= i:
print('%d*%d=%d' %(i,j,i*j),end=' ')
j += 1
print(" ")
j = 1
i += 1
#输入一个正整数判断是否为素数
ints = int(input('请输入一个正整数:'))
is_prime = True
if ints > 0:
for i in (2,ints):
if ints % i ==0:
is_prime = False
break
if is_prime and ints != 1:
print('你输入的整数%d为素数' %(ints))
else:
print('你输入的整数%d为非素数' %(ints))
else:
print('限定范围为正整数哦!')
# 求两个正整数的最大公约数和最小公倍数
randx = int(input('输入一个正整数x:'))
randy = int(input('输入一个正整数y:'))
if randx > randy or randx < randy:
randx,randy = randy,randx
for number in range(randx,0,-1):
if randx % number == 0 and randy % number == 0:
print('%d 和 %d 的最大公约数为 %d' %(randx,randy,number))
print('%d 和 %d 的最小公倍数为 %d' %(randx,randy,(randx * randy // number)))
break
else:
print('两个相等的数你说你为啥要求那啥')
# 根据输入行数打印*
row = int(input('输入你要打印*行数:'))
for i in range(row):
for j in range(i+1):
print('*',end=' ')
print('')
for i in range(row):
for j in range(row):
if j < row - i -1:
print(' ',end=' ')
else:
print('*',end=' ')
print('')
for i in range(row):
for j in range(row - i - 1):
print(' ',end=' ')
for j in range(2 * i + 1):
print('*',end=' ')
print()