Python学习笔记(十) 分支结构语句之循环语句for,while和while循环嵌套

【摘要】 史上最为详细的python学习笔记,记录学习过程的知识点和难点

循环语句for

for循环的语法格式如下:

for iterating_varin sequence: # iterating_variable: 迭代变量,sequence: 序列

statements(s) # statements: 语句

print(range(10))# 0-10,不包含10
”’
格式:
for iterating_var in sequence: # iterating_variable: 迭代变量,sequence: 序列
statements(s) # statements: 语句
”’
for i in range(10):
print(‘hello —->’, i)

print(‘—– End —–‘)

吃馒头问题:

##### 吃馒头问题#####
# 方式1
”’
for循环的取值范围示例1
”’
print(方式1)
name = 阿斯蒂芬
for i in range(5):# 0-5,不包含5
print(‘%s很饿,正在吃第%d个馒头% (name, i + 1))
print()

# 方式2
”’
for循环的取值范围示例2
”’
print(方式2)
for i in range(1, 6):# 1-6,不包含6
print(‘{}很饿,正在吃第{}个馒头.format(name, i))
print()

# 方式3
”’
for循环嵌套使用if…else结构
”’
print(方式3)
name = 张无忌
for i in range(1, 6):
if i == 3:
print(‘{}快扔掉这个馒头,有剧毒:鹤顶红!!!.format(name))
else:
print(‘{}很饿,正在吃第{}个馒头.format(name, i))

print(‘%s说:终于吃饱啦!% name)
print()

# 方式4
”’
for…else语句,python独有的语句
else:适用于for没有循环数据或已经循环完成时,后续需要做的事情
range的范围正常执行完毕,而没有异常被break跳出,就可以执行else
只要有break执行,就不会再执行else
书写格式为:
for i in 范围:
有数据时执行的语句
else:
没有数据或循环已经完成后要做的事情
”’
print(方式4)
num = int(input(请输入需要的馒头数量:))# 输入0会怎么样直接执行else语句
for i in range(num):
print(‘{}很饿,正在吃第{}个馒头.format(name, i + 1))
# if i == 3:
# print(‘这个馒头有剧毒,快丢掉它!!!‘)
# break # 若执行了break,则下面的else将不会再执行
else:
print(还没有给我馒头,{}饿哭啦…’.format(name))
print()


# 方式5
”’
pass关键字示例
pass表示空语句
只要有有缩进,而缩进的内容还不确定时,此时为了保证语法的完整性和正确性,
就可以使用pass占位,且不会报出缩进错误IndentationError: expected an indented block
”’
if 10 > 7: # 分别测试并解释大于> 和小于< 的两种结果
print(’10是大的)
else:
pass # 如果省略此处的pass,则会报错IndentationError: expected an indented block

print(‘—– 判断结束—–‘)
print()

# 方式6
# 视频链接:https://www.bilibili.com/video/BV15J411T7WQ?p=39
”’
break关键字示例
break表示强制跳出当前循环结构,继续执行下方的代码块
”’
for i in range(3):
username = input(请输入用户名:)

username = username.replace(‘ ‘, ) # 将空格替换为空
password = input(请输入密码:)
# 验证用户名和密码
if username == ‘songsong’ and password == ‘123456’:
print(欢迎用户{}.format(username))
print(‘-‘ * 10, 轻松购物吧, ‘-‘ * 10)
break # 注意此处的break和最下面的else之间有何关联
”’
当登录成功时,执行break语句强制跳出当前循环,而最下面
else语句也属于for循环体,因此不会执行最下面的else语句内容
”’
else:
print(用户名或密码错误,请重新输入。)
else:
print(连续3次错误,账户已被锁定,需要重新激活!) # 三次输入错误的时候

”’
range的三种写法
range(n) –> range(0, n) # 不包含n
range(m, n) –> range(m, n) # 不包含n
range(m, n, step) –> range(start, end, step) # step为步长

class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
”’
for i in range(0, 51, 5):
print(‘—->’, i)

循环语句while

”’
循环语句while
”’
i = 1
while i <= 10:
print(‘—->’, i)
i += 1 # 没有i++,语法错误

print(打印完毕!)


”’
打印1 – 30之间的所有3的倍数
”’
# 方式1:推荐
n = 1
while n <= 30:
if n % 3 == 0:
print(‘—->’, n)
# 改变n的值
n += 1

print(‘*’ * 20)

# 方式2
n = 3
while n <= 30:
print(‘====>’, n)
n += 3

print(‘*’ * 20)

# 方式3
n = 3 # 都改成1的时候就不会有运行结果了
while n <= 30 and n % 3 == 0:
print(‘****>’, n)
n += 3 # 改成1就不会有运行结果了分析为什么

”’
打印1 – 30之间所有既是3的倍数,也是5的倍数的数
”’
n = 1
while n <= 30:
if n % 3 == 0 and n % 5 == 0:
print(‘———>’, n)
# 改变n的值
n += 1

”’
使用while循环计算1 – 100之间的累加和
”’
i = 1
sum = 0

while i <= 100:
sum += i
i += 1

print(‘1 – 100之间的累加和是:, sum)

while循环嵌套

打印*号三角形:

”’
使用while循环嵌套打印*号三角形
”’
layer = 1
while layer <= 5:
start = 1

while start <= layer:
print(‘*’, end = ) # 打印末尾符号为空
start += 1

layer += 1
print() # 换行

打印九九乘法表:

”’
打印九九乘法表
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
……
1 * 9 = 9 2 * 9 = 18 ……
”’
layer = 1
while layer <= 9:
number = 1

while number <= layer:
# print(‘{} * {} = {} ‘.format(number, layer, (number * layer)), end = ”)
print(‘%d *%2d = %2d ‘ % (number, layer, (number * layer)), end = )
number += 1

layer += 1
print()

小练习:澳门赌场之大富翁

”’
小练习:门赌场之大富翁
1、欢迎进入xxx游戏
2、输入用户名,用户默认没有币
3、提示用户充值买币(100块钱30币,充值必须是100的倍数,充值不成功可以再次充值)
4、玩一局游戏扣2个币,猜大小(系统用随机数模拟骰子的值)
5、只要猜对了奖励双倍金币,可以继续玩,也可以主动退出
6、没有币或币小于2个自动退出
”’

import random
import time

print(‘*’ * 31)
print(欢迎来到澳门赌场之大富翁)
print(‘*’ * 31)

username = input(请输入一个昵称:)
token = 0 # 默认没有币
answer = input(确定进入游戏吗(y / n)? ‘)

if answer == ‘y’ or answer == ‘Y’:
# 判断游戏币是否充足,不充足则提示充值
while token < 2: # 玩一局需要2个币,小于2个币则不能继续游戏
print(当前游戏币:, token)
top_up = int(input(金币不足,请充值(10030币,充值金额必须是100的倍数): ‘))
if top_up % 100 == 0 and top_up > 0:
token = (top_up // 100) * 30# //*的优先级相同,括号可省略
else:
print(充值失败,充值金额必须是100的倍数。)
print(昵称:{},当前游戏币: {}\n.format(username, token))

# 进入游戏
print(正在进入游戏……\n)
time.sleep(2)
print(进入游戏《大富翁》。)

while True:
token -= 2 # 进入游戏花费2个币
print(\n系统正在洗牌……\n)
time.sleep(1)
# 骰子产生2个数,需导入random
dice1 = random.randint(1, 6) # 1-6,包含6
dice2 = random.randint(1, 6)
# print(dice1, dice2) # 打印两个随机数
print(系统洗牌完毕,请猜大小:)
guess = input(请输入或者)

# 判断是否猜中
if (guess == and dice1 + dice2 > 6) or (guess == and dice1 + dice2 <= 6):
print(\n恭喜{}猜中本轮结果,奖励4个游戏币。.format(username))
token += 2 * 2
print(当前游戏币:, token)
else:
print(\n很遗憾猜错了,本局游戏输啦/(o)/~~’)
print(当前游戏币:, token)

# 询问是否继续游戏
answer = input(\n是否再来一局? 需扣除2个游戏币(y / n))
# if (answer != ‘y’ or answer != ‘Y’) or token < 2: # 有错误,需改善
if answer != ‘y’ or token < 2:
print(退出游戏啦!!!)
print(您的游戏币总数为:, token)
break # 退出while Ture循环

elif answer == ‘n’ or answer == ‘N’:
print(退出游戏,放弃了一个亿!!!)

else:
print(输入错误,您可能还不想赚一大笔钱!!!)

课后小结:

# 1 – 50之间偶数的累加和的两种循环方式
# 方式1while循环
i = 1
sum = 0
while i <= 50:
if i % 2 == 0:
sum += i

i += 1
print(‘sum = ‘, sum)
print(完成while循环之后,i的值是:, i)


print()


# 方式2for循环
sum = 0
for i in range(1, 51):
b = 0
b += i

if i % 2 == 0:
sum += i

print(‘sum = ‘, sum)
print(完成for循环之后,i的值是:, i)

print(‘b—->’, b) # 变量b提示:Name ‘b’ can be undefined
”’
上面print的目的:
1、声明变量的位置:
声明在forwhile的外层,sum += i相当于累加,
如果声明在forwhile的内层,每次循环都会执行sum = 0
2、在python中,没有作用域这一说法
forwhile循环中没有变量的作用域这一说法,
forwhile循环结构的内外层都可以获取这个变量的值
”’
print()


# 1 – 10之间不是3的倍数的累加和
# 方式1
sum = 0
for i in range(10):
if i % 3 != 0:
sum += i
print(方式1sum —->’, sum)

sum = 0
for i in range(10):
if i % 3 == 0:
continue # continue:跳过当前循环,不执行循环体中continue下面的任何语句,直接执行下一次循环
sum += i
print(方式2sum —->’, sum)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享