【摘要】 史上最为详细的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(‘金币不足,请充值(100元30币,充值金额必须是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之间偶数的累加和的两种循环方式
# 方式1:while循环
i = 1
sum = 0
while i <= 50:
if i % 2 == 0:
sum += i
i += 1
print(‘sum = ‘, sum)
print(‘完成while循环之后,i的值是:‘, i)
print()
# 方式2:for循环
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、声明变量的位置:
声明在for,while的外层,sum += i相当于累加,
如果声明在for,while的内层,每次循环都会执行sum = 0
2、在python中,没有作用域这一说法
在for,while循环中没有变量的作用域这一说法,
在for,while循环结构的内外层都可以获取这个变量的值
”’
print()
# 求1 – 10之间不是3的倍数的累加和
# 方式1:
sum = 0
for i in range(10):
if i % 3 != 0:
sum += i
print(‘方式1:sum —->’, sum)
sum = 0
for i in range(10):
if i % 3 == 0:
continue # continue:跳过当前循环,不执行循环体中continue下面的任何语句,直接执行下一次循环
sum += i
print(‘方式2:sum —->’, sum)