上节课回顾
-
数字类型
-
整形
x = int(10) pow(x, 10) # 1024
-
浮点型
y = float(10) #10.0 print(round(0.1 + 0.2, 1) == 0.3) #true
-
运算符
+ - * / // % **
-
-
字符串类型
name = str(10) # '10' name = 'nick' name = "nick" name = "nick's" name = """nick's name is "nick""""
-
内置方法
name.split() # 指定字符串分割 name.startswith('n') # 从开头匹配子串 返回逻辑型结果 true or flase name.endswith('k') # 从末尾匹配子串 返回逻辑型结果 true or flase print(name.center(50, '*')) # 居中填充字符
-
转义符
s = "nick's name is \"nick\"" s = '\t'print(s) s = '\n'print(s) s = r'\t\n'print(s)
-
分支结构
-
单分支
# if一般用于判断/选择的场景 # 90以上优秀 score = 95 if score > 90: print('优秀')# 双分支
-
双分支
# if...else # 90以上优秀,90一下良好 score = 95 if score > 90: print('优秀') else: print('良好')
-
多分支
# if...elif...elif...else # if...if...if...if # 90以上优秀,90-70良好,70以下不及格 score = 95 if score > 90: print('优秀') elif score > 70: print('良好') else: print('及格') score = 95 if score > 90: print('优秀') if score > 70 and score < 90: # 同时满足 print('良好') if score < 60: print('及格')
三元表达式
# 结果一 条件 结果二
print('优秀') if score > 90 else print('良好') # 单分支没有,多分支也没有
逻辑运算符
# > >= < <= == !=
# and 两者都必须成立
# or 其中一个成立即可
# not 非
异常处理
x = 10
try:
y = int(input('数字:')) # 10
y += 10 # y = y + 10
except Exception as e:
print(f'error: \033[1;35m {e} \033[0m!')
finally: # 无论包不报错,都会执行finally下面的代码
print(1)
循环
for循环
# 举例
for i in range(100): # 循环100次
print(i)
range(5) # [0,1,2,3,4]
range(1,3) # [1,2]
range(1,10,2) # [1,3,5,7,9]
for i in 'nick': # 也可以循环输出字符串
print(i)
while循环
count = 0
while count < 100:
count += 1
print(count)
while...else
count = 0
while count < 100:
count += 1
print(count)
else: #正常跳出循环的时候会执行,异常中断循环不执行
print('打我')
continue + break
##演示continue语法##
count = 0
while count < 100:
count += 1
if count == 50:
continue # 不执行下面代码,直接开始下次循环
print(count)
##演示break语法##
count = 0
while count < 100:
count += 1
if count == 50:
break # 跳出并终止循环
print(count)
random模块
-
产生随机数
# 产生随机整数 有a和b两个参数作为变化范围 print(random.randint(1,10)) # 从1到10
-
根据随机数种子产生随机小数
# 设置固定随机种子后 就是假随机了,第一次结果永远固定 random.seed(10) # 设置随机数种子 print(random.random()) # 取(0,1)之间的小数 # 如果不自定义种子,则种子按照当前的时间来 print(random.random()) # 取(0,1)之间的小数
-
choice函数
print(random.choice([1,1,2,3,4])) # 通过choice函数选择列表中的一个数
-
shuffle函数
lt = [1,2,3,4] random.shuffle(lt) # 通过shuffle函数打乱序列 print(lt)
使用时间模拟random随机数
import time
time_ = time.time()
print(str(time_).split(".")[-1][-1]) # 使用切割时间尾数的最后一位做随机数
圆周率计算
-
圆周率近似计算公式
pi = 0 k = 0 while True: # 使用公式取近似计算 pi += (1/(16**k))* \ (4/(8*k+1) - 2/(8*k+4) - 1/(8*k+5) - 1/(8*k+6)) print(pi) k += 1
-
蒙特卡洛方法求圆周率
import random count = 0 for i in range(100000): x, y = random.random(), random.random() // 使用随机数方式撒点 dist = pow(x ** 2 + y ** 2, 0.5) // 重要公式 if dist < 1: count += 1 print(count / 100000 * 4)
作业
使用while循环输出1 2 3 4 5 6 8 9
求1-100的所有数的和
输出 1-100 内的所有奇数
输出 1-100 内的所有偶数
求1-2+3-4+5 ... 99的所有数的和
用户登陆(三次机会重试)
猜年龄游戏
要求: 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出猜年龄游戏升级版(选做)
要求: 允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序,如何猜对了,就直接退出for循环打印99乘法表
for循环打印金字塔
# 题目1:使用while循环输出1 2 3 4 5 6 8 9
i=0
while i<10:
i += 1
if(i==7):
continue
print(i)
# 题目2:求1-100的所有数的和
s=0
for i in range(1,101):
s += i
print(s)
# 题目3:输出 1-100 内的所有奇数
for i in range(1,101):
if(i%2==1):
print(i)
# 题目4: 输出 1-100 内的所有偶数
for i in range(1,101):
if(i%2==0):
print(i)
# 题目5:求1-2+3-4+5 ... 99的所有数的和
s=1
for i in range(2,100):
if (i % 2 == 0):
s -= i
if (i % 2 == 1):
s += i
print(s)
# 题目6:用户登陆(三次机会重试)
for i in range(3):
id = input("请输入账号:")
pwd = input("请输入密码:")
if id == "xucheng" and pwd == "123":
print("登陆成功")
# 题目7:猜年龄游戏
for i in range(3):
age = input("请输入您猜的年龄:")
if int(age) == 18:
print("猜对了")
break
# 题目8:猜年龄游戏升级版(选做)
i = 0
while i!=3 :
age = input("请输入您猜的年龄:")
if int(age) == 18:
print("猜对了")
break
i += 1 # 计数器就加1
if i == 3: # 次数
ret = input("是否还想玩(Y/N):")
if ret == "Y" or ret =="y":
i = 0;
# 题目9:for循环打印99乘法表
for i in range(1,10):
for j in range(1, i+1):
print(f"{i}*{j}={i*j}",end=" ")
print()
# 题目10:for循环打印金字塔
for i in range(1,6):
print(f"{'*'*(i+i-1): ^9}")