目录
for-in循环
如果明确的知道循环执行的次数,我们推荐使用for-in
循环,例如输出100行的”hello, world“。 被for-in
循环控制的语句块也是通过缩进的方式来构造的。
"""
用for循环实现1~100求和
"""
total = 0
for x in range(1, 101):
total += x
print(total)
其中,需要注意在循环中,取值范围range的用法:
range(101)
:可以用来产生0到100范围的整数,需要注意的是取不到101。range(1, 101)
:可以用来产生1到100范围的整数,即取头不取尾。range(1, 101, 2)
:可以用来产生1到100的奇数,其中2是步长,即每次递增的值。range(100, 0, -2)
:可以用来产生100到1的偶数,其中-2是步长,即每次递减的值。
即可实现例如求1~100之间的奇数求和。
"""
用for循环实现1~100之间的奇数求和
"""
total = 0
for x in range(1,101,2):
total += x
print(total)
while循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while
循环。while
循环通过一个能够产生bool
值的表达式来控制循环,当表达式的值为True
时则继续循环,当表达式的值为False
时则结束循环。
典例:猜数字游戏
"""
猜数字游戏
计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。
"""
import random
# 产生一个1-100范围的随机数
answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
number = int(input('请输入: '))
if number < answer:
print('大一点')
elif number > answer:
print('小一点')
else:
print('恭喜你猜对了!')
break
# 当退出while循环的时候显示用户一共猜了多少次
print(f'你总共猜了{counter}次')
嵌套循环
打印九九乘法表:
"""
打印乘法口诀表
"""
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i * j}', end='\t')
print()
分支和循环结构的应用
寻找水仙花数
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num)
注意:% 即求模取余,// 即整除
正整数的反转
num = int(input('num = '))
reversed_num = 0
while num > 0:
reversed_num = reversed_num * 10 + num % 10
num //= 10
print(reversed_num)
CRAPS赌博游戏
CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简化后的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;玩家如果摇出其他点数则玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数玩家继续摇骰子,直到分出胜负。(假定有1000元)
from random import randint
money = 1000
while money > 0:
print(f'你的总资产为: {money}元')
go_on = False
# 下注金额必须大于0小于等于玩家总资产
while True:
debt = int(input('请下注: '))
if 0 < debt <= money:
break
# 第一次摇色子
# 用1到6均匀分布的随机数模拟摇色子得到的点数
first = randint(1, 6) + randint(1, 6)
print(f'\n玩家摇出了{first}点')
if first == 7 or first == 11:
print('玩家胜!\n')
money += debt
elif first == 2 or first == 3 or first == 12:
print('庄家胜!\n')
money -= debt
else:
go_on = True
# 第一次摇色子没有分出胜负游戏继续
while go_on:
go_on = False
current = randint(1, 6) + randint(1, 6)
print(f'玩家摇出了{current}点')
if current == 7:
print('庄家胜!\n')
money -= debt
elif current == first:
print('玩家胜!\n')
money += debt
else:
go_on = True
print('你破产了, 游戏结束!')