目录
一.复习回顾(基本数据类型)
1.数字类型
(1)整型
x = int(10) pow(x, 10)
(2)浮点型
y = float(10) # 10.0 print(round(0.1 + 0.2, 1) == 0.3)
2.运算符
+-*/ // % **
3.字符串
name = str(10) # '10' name = 'nick' name = "nick" name = "nick's"# 双引号可以包裹单引号 name = """ nick's name is "nick" """ # 三双引号里的字符串可以换行
4.内置方法
name.split() # 指定字符串分割 name.startswith('n')#从头开始匹配 name.endswith('k')# 从尾开始匹配 print(name.center(50, '*')) # 从中间开始补充字符*,总长度50
5.转义字符
s = "nick's name is \"nick\"" s = '\t' # 缩进 print(s) s = '\n' # 换行 print(s) s = r'\t\n' # \r原位打印,和end=''成对使用 print(s) for i in range(5): print('1',end=',')
二.程序的控制结构
1.分支结构
单分支
if一般用于判断/选择的场景
90分以上优秀
score=95 if score>90: print('优秀')
双分支
if ....else
90分以上优秀,90分以下良好
score=95 if score>90: print('优秀') else: peint('良好')
三元表达式
score=75 print('优秀')if score>90 else print('良好')# 单分支没有,多分支也没有 #结果一 条件 结果二
多分支
if....elif......elif....else
90以上优秀,90-70良好,70一下不及格
score=95 if score>90: print('优秀') elif score>70: peint('良好') else: peint('及格')
if......if......if......if
score=95 if score>90: print('优秀') if score>70 and score<90: peint('良好') if score<60: peint('及格')
2.逻辑运算符
> >= < <= == !=
and 两者都必须成立
or 其中一个成立即可
not 非
三.条件判断及组合
1.条件判断
操作符 | 数学符号 | 描述 |
---|---|---|
< | < | 小于 |
<= | ≤ | 小于等于 |
>= | ≥ | 大于等于 |
> | > | 大于 |
== | = | 等于 |
!= | ≠ | 不等于 |
2.条件组合
操作符及使用 | 描述 |
---|---|
x and y | 两个条件x和y的逻辑与 |
x or y | 两个条件x和y的逻辑或 |
not x | 条件x的逻辑非 |
3.条件判断及组合
guess = eval(input()) if guess > 99 or guess < 99: print("猜错了") else: print("猜对了")
四.异常处理
1.异常处理的基本使用
try: <语句块1> except: <语句块2> try: num = eval(input("请输入一个整数: ")) print(num**2) except: print("输入不是整数")
# 示例 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) Exception# 异常处理的时候,只要写这个就可以了 raise # 自定义报错 assert 断言() assert 1==2
2.异常处理的高级使用
finally
对应语句块4一定执行else
对应语句块3在不发生异常时执行
try:
<语句块1>
except:
<语句块2>
else:
<语句块3>
finally:
<语句块4>
五.程序的循环结构
1.for循环
for i in range(1,10,2): print(i)# [1,3,5,7,9],输出的就是1-10之间的奇数 for i in 'nick': print(i)# n,i,c,k每个字符换行输出
2.while循环
continue和break的区别 # continue不执行下面代码,继续运行循环 count = 0 while count < 100: # 49 if count == 49: count += 1 continue # 不执行下面代码,继续运行循环 count += 1 # 50 跳过不打印 print(count) # 50 # break终止循环 结束本次的while循环 count = 0 while count < 100: # 49 if count == 49: count += 1 break # 终止循环 结束本次的while循环 count += 1 # 50 print(count) # 50
3.while.....else
count = 0 while count < 100: # 49 if count == 49: count += 1 break # 终止循环 count += 1 # 50n print(count) # 50 else: #正常跳出循环的时候会执行,异常中断不执行 print('打我')
4.break和continue
- break跳出并结束当前整个循环,执行循环后的语句
- break仅跳出当前最内层循环
- continue结束当次循环,继续执行后续次数循环
- break和continue可以与for和while循环搭配使用
- 当循环没有被break语句退出时,执行else语句块
5.字符串遍历
s是字符串,遍历字符串每个字符,产生循环
for c in s: <语句块>
6.列表循环遍历
ls是一个列表,遍历其每个元素,产生循环
for item in ls: <语句块>
六.random模块
1.random产生随机数
random库是使用随机数的Python标准库
- 伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
- random库主要用于生成随机数
使用random库:
import random
import random random.seed(10) # 种子 # 如果不自定义种子,则种子按照当前的时间来 print(random.random())# 取0和1之间的小数 print(random.choice([1,1,2,3,4]))
2.基本随机数函数
函数 | 描述 |
---|---|
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 |
random() | 生成一个[0.0, 1.0)之间的随机小数 |
函数 | 描述 |
---|---|
randint(a,b) | 生成一个[a, b]之间的整数 |
randrange(m, n[, k]) | 生成一个[m, n)之间以k为步长的随机整数 |
getrandbits(k) | getrandbits(k) |
uniform(a, b) | 生成一个[a, b]之间的随机小数 |
choice(seq) | 从序列seq中随机选择一个元素 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |
import random
random.seed(10) # 产生种子10对应的序列
random.random()
3.time()自定义函数
# 自己造的一个随机数 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)
作业:
1. 使用while循环输出1 2 3 4 5 6 8 9 10
2. 求1-100的所有数的和
3. 输出 1-100 内的所有奇数
4. 输出 1-100 内的所有偶数
5. 求1-2+3-4+5 ... 99的所有数的和
6. 用户登陆(三次机会重试)
7:猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
8:猜年龄游戏升级版(选做)
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如何猜对了,就直接退出
9.for循环打印99乘法表
10.for循环打印金字塔:如下
*
***
*****
*******
*********
1.使用while循环输出1 2 3 4 5 6 8 9 10
count = 0
while count < 10:
if count == 6:
count += 1
continue
count += 1
print(count,end=' ')
2.求1-100的所有数的和
sum=0
count=0
while count<100:
count +=1
sum+=count
print(sum)
3.输出 1-100 内的所有奇数
count=1
while count<100:
if count % 2==1:
print(count,end=' ')
count+=1
4.输出 1-100 内的所有偶数
count=1
while count<=100:
if count % 2==0:
print(count,end=' ')
count+=1
5.求1-2+3-4+5 ... 99的所有数的和
sum=0
for i in range(1,100):
if i%2==0:
sum -=i
else:
sum+=i
print(sum)
6.用户登陆(三次机会重试)
id='1608210104'
pw='123456'
for i in range(3):
id1 = input('Please your enter id:')
pw1 = input('Please your enter password(您只有三次机会):')
if id1==id and pw1==pw:
print('you enter is True(你已登录成功)')
else:
print('you enter is False')
print('三次机会已用完')
7.猜年龄游戏
age='18'
for i in range(3):
age1 = input('Please your enter age:')
if age1==age:
print("your answer is very True")
break
else:
continue
8.猜年龄游戏升级版(选做)
要求允许用户最多尝试3次# 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序# 如何猜对了,就直接退出
i=0
age=18
while i!=3 :
age = input("Please your enter age:")
if age== 18:
print("your answer is True")
break
i += 1 # 计数器就加1
if i == 3: # 次数
ret = input("是否还想玩(Y/N):")
if ret == "Y" or ret =="y":
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}")