python第三天

猜拳游戏:
import random

random=random.randint(1,3)

print(random)

user_total = 0
con_total=0
while True:
print("猜拳游戏规则:「石头(1)、剪刀(2)、布(3)」")
user = int(input("请出拳"))
random1 = random.randint(1, 3)
if (user1 and random12) or (user2 and random13) or (user3 and random11):
print(f"用户出的是{user},计算机出的是{random1},用户胜利")
user_total += 1
elif userrandom1:
print("平局")
else:
print(f"用户出的是{user},计算机出的是{random1},用户输了")
con_total +=1
a = input("是否退出游戏:0表示退出,1继续")
if a
"0":
print(f"计算机:user={con_total}:{user_total}")
break

作业:

题目描述

模拟一个数字密码锁的工作过程,规则如下:

1. 初始密码为四位数:1234

2. 用户有3次输入密码的机会

3. 每次输入后:

- 若密码正确,提示"密码正确,锁已打开"并结束程序

- 若密码错误,提示"密码错误,剩余X次机会"

- 若输入的不是四位数,提示"请输入四位数密码",不消耗尝试次数

4. 额外功能:

- 连续输错3次后,提示"密码错误次数过多,锁已锁定"

- 锁定后询问是否重置(y/n),输入y则重新获得3次机会,输入n则退出程序

作业:题目要求
程序随机生成 1-20 的整数作为答案,玩家有 5 次猜测机会,规则如下:
用 for 循环控制 5 次猜测机会,每次输入猜测的数;
若猜对,打印 “恭喜!第 X 次猜对了” 并提前结束游戏;
若猜错,提示 “猜大了” 或 “猜小了”,并显示剩余次数;
5 次都猜错,打印 “游戏结束,正确答案是 XX”。

答案:
import random
answer=random.randint(1,20)
max_attempts=5
print("欢迎来到猜数字游戏!")
print("我已经想了一个1-20之间的整数,你有5次机会来猜它。")
print("=" * 50)
for attempt in range(1,max_attempts+1):
user=int(input(f"第{attempt}次猜测,请输入1-20之间的整数:"))
if user<1 or user>20:
print("请输入1-20之间的整数!")
continue
if user==answer:
print(f"恭喜!第{attempt}次猜对了!")
elif user>answer:
print("猜大了!",end=" ")
else:
print("猜小了!",end=" ")

练习题 3:模拟 ATM 机系统(多功能 + 安全验证)
题目要求
模拟一个简易 ATM 机操作,功能包括:
登录验证:预设账号("123456")和密码("654321"),允许最多 3 次输入错误,超过则锁定(退出程序);
主菜单:登录后显示 “查询余额、存款、取款、转账、退出” 选项;
核心功能:
存款:输入金额(正整数),余额增加;
取款:输入金额(正整数),需判断是否≤余额,否则提示 “余额不足”;
转账:输入目标账号(非空)和金额(正整数),需判断金额≤余额,转账后余额减少;
查询余额:显示当前余额;
用 while 循环控制主菜单持续运行,输入 “退出” 则结束程序。
解题思路
登录阶段:用 while 循环控制登录次数(最多 3 次),for 循环可辅助计数,if 判断账号密码是否正确,错误次数达 3 次则退出;
初始化账户信息:余额(如 1000 元)、当前账号;
主菜单阶段:用 while True 循环持续显示选项,用户输入选项后,用 if/elif 分支执行对应功能;
各功能逻辑:
存款 / 取款 / 转账:用 if 判断输入金额是否为正整数(简化处理,假设输入合法),取款 / 转账需额外判断金额≤余额;
转账需验证目标账号非空(if target_account.strip() == "");
输入 “退出” 时,用 break 退出主循环,程序结束。
答案:
correct_username="123456"
correct_passwd="654321"
money=1000
login_attempts=3
print("=银行管理系统")
for i in range(3):
user=input("账号:")
pwd=input("密码:")
if user
"123456" and pwd"654321":
print("登陆成功!")
else:
print(f"错误,还剩{2-i}次机会")
else:
print("锁定!")
while True:
print("1.查询 2.存款 3.取款 4.转账 5.退出")
choice=input("请选择:")
if choice
"1":
print(f"余额:{money}元")
elif choice"2":
amount=int(input("存款金额:"))
money=money+amount
print(f"存款成功,余额:{money}元")
elif choice
"3":
amount=int(input("取款金额:"))
if amount<=money:
money=money-amount
print(f"取款成功,余额:{money}元")
else:
print("余额不足")
elif choice"4":
account=input("对方账号:")
amount=int(input("转账金额:"))
if amount<=money:
money=money-amount
print(f"向{account}转账{amount}元成功")
else:
print("余额不足")
elif choice
"5":
print("再见!")
break
else:
print("输入错误")

输入一个正整数 n,使用 while 循环统计 1 到 n 之间(含 n)所有 “既是偶数又能被 4 整除” 的数,并打印:
这些数的总和;
这些数的个数。
示例:输入 n=10,符合条件的数为 4、8,总和 12,个数 2。
答案:
n=int(input("请输入一个正整数n:"))
total_sum=0
count=0
current=4
print(f"1到{n}之间既是偶数又能被4整除的数有:")
while current<=n:
print(current,end=" ")
total_sum=total_sum+current
count=count+1
current=current+4
print(f"这些数的总和为:{total_sum}")
print(f"这些数的个数为:{count}")

输入一个正整数 k(2≤k≤5),使用 嵌套 for 循环 打印对称数字图案,规则:
共 k 行,第 i 行(从 1 开始)打印 i 个数字,数字从 1 递增到 i;
每行数字之间用空格分隔。
示例:输入 k=3,输出:
67a893663a224dd041288cbfd2788e98
答案:
k=int(input("请输入一个正整数 k(2<=k<=5:"))
if k<2 or k>5:
print("输入错误,k必须在2到5之间")
else:
#外层循环控制行数
for i in range(1,k+1):
for j in range(1,i+1):
print(j,end="")
if j<i:
print(" ",end="")
print()

输入一个正整数 k(k 为奇数,3≤k≤7),使用 嵌套 for 循环 打印由星号(*)组成的菱形,菱形的对角线长度为 k。示例:输入 k=5,输出:
98597abde3f16d67ec55ee8043371137

输入商品价格 price(整数,0 < price < 100)和支付金额 payment(整数,payment ≥ price),计算找零金额并使用 最少硬币数 组合(硬币面额:1 元、5 元、10 元、20 元)。示例:找零 36 元,最优组合为 20+10+5+1(共 4 枚)。


第二天复习作业答案:
image

Input 获取的数据全部是字符串的格式
Bool() 非0数字转换成波尔值是True
0/None 是False
// 整除 /正常除 幂次方(print(23)
Num1%num20
一个=表示赋值,
才是等于
A=12
B=12
Print(a==b)

成员运算符 in not in(判断某个数据是否在某个序列中)

is运算符 判断是否是同一个对象

A=2555
B=2555
print=(a==b) 买的东西是同款,东西一样
True
Print(a is b) 是不是一个快递柜
False

位预算符

程序控制流程

顺序结构、选择结构
If 条件
条件成立时执行的代码
Else:
条件不成立时执行的代码

作业答案:
A,b,c=eval(input(“请输入三角形的三边,用逗号隔开:”))

Print(,a,b,c)

If a+b>c and b+c>a and a+c>b:
If abc:
Print(“等边三角形”)
Elif ab or ac or b==c:
Print(“等腰三角形”)
Else:
Print(“普通三角形”)
Else:
Print(“三边无法构成三角形”)

Passwd=”123456”
Money=1000
User_passwd=Input(“请输入您的密码”)
If user_passwd==passwd:
Print(“进入程序,选择功能:”)
Print(“1.查询余额 2.存款 3.取款 4.退出”)
Choose = input(“请输入你想要实现的功能:”)
If choose=”1”:
Print(f”当前余额是{money}”)
Elif choos=”2”:
Cun = int(input(“请输入存款进额:”))
If cun >0:
Money +=cun # money=money+cun
Print(f”成功存款{cun},当前余额是{money}”)
Else:
Print(“存款金额无效”)
Elif choos=”3”:
Qu = int(input(“请输入取款金额:”))
If qu>0:
If qu<=money:
Money =money-qu
Print(f”成功取款{qu},当前余额是{money}”)
Else:
Print(“余额不足“”)
Else:
Print(“取款金额无效”)
Else:
Print(“密码错误,退出程序”)
image

print("请选择操作:")
print("1.加法")
print("2.减法")
print("3.乘法")
print("4.除法")
print("5.平方")
print("6.幂运算")
choose = int(input("请输入你的选择:"))
if choose in [1,2,3,4,6]:
num1 = int(input("请输入num1:"))
num2 = int(input("请输入num2:"))
if choose1:
print(f"{num1}+{num2}={num1+num2}")
elif choose
2:
print(f"{num1}+{num2}={num1 - num2}")
elif choose3:
print(f"{num1}+{num2}={num1 * num2}")
elif choose
4:
if num2==0:
print("除数不能为0")
else:
print(f"{num1}+{num2}={num1 / num2}")
else:
print(f"{num1}+{num2}={num1 ** num2}")
else:
num = int(input("请输入num:"))
print(num*num)

image

代码练习量

循环结构:周二复始 运行程序去重复执行某段代码,或者重复执行相似的代码
遍历数据(复杂数据类型、字符串(对象,序列))

print(1) 1-1000

打印10次 hello,python

两种循环for(用于遍历序列的) while

Xianopen (所有字符挨个都拿出来,叫遍历)

for 字符串序列

For 临时变量 in 序列:
Xxxx 循环的代码

例子:
str1=”zhangsan”
For i in str1:
Print(i)

image
image
image

实现普通循环的效果 range():生成正数序列的

range(10): 生成从0到10-1的整数序列

range(num):生成从0到num-1的整数序列

For i in range(10):
Print(i)
0
1
2
...
9

range(num1,num2) 生成从num1到num2-1的整数

取10-20
For i in range(10,21)
Print(i)

range(num1,num2,step): 从num1开始,到num2-1结束的,正数步长为2的整数序列

For i in range(0,11,2): #[0,2,4,6,8,10]
Print(i)
注意:步长默认不写是1!!!

For i in range(10,-1,-1):
Print(i)

0-100之间所有的偶数之和

Sum=0 (要放在循环的外面)
For i in range(101):
If i % 2==0: (证明是偶数)
Sum+=i
Print(sum)

下面这个有问题:
Sum=0 (要放在循环的外面)
For i in range(101):
If i % 2==0: (证明是偶数)
Sum+=i
Print(sum) (每循环一次就会打印一次)

for 嵌套 for

{7 10} 连送7天,每次送10朵

For i in range(1,8):
For j in range(1,11):
Print(f”今天是{i}天,这是送的第{j}朵花”)

*

**

***

****

*****

外层表示行数,内层循环表示个数
for i in range(1,6):
for j in range(1,i+1):
print("*",end="")
print()

print(“*”,end=””) 打印完不让换行

print() 表示换行

想查看每一行执行情况,可以打断点
image

9*9乘法

循环退出

For i in range(10):

Print(i)

break 退出循环

If i==2:

Break #退出整个循环

If i==2:
Continue #立即终止本次循环,开始下次循环
Print(i)

For i in range(5):
If i==2:
Break (属于异常结束,不会返回else的内容,如果是continue是正常结束)
Print(i)
Else:

循环正常结束时执行的代码

Print(“end”)

练习:
image

total_score=0
pass_count=0
excellent_count=0
valid_count=0
n=int(input("请输入学生人数:"))
for i in range(n):
chengji=float(input("请输入成绩:"))
if 0<chengji<=100:
total_score=chengji+total_score
pass_count=pass_count+1
if valid_count>=60:
valid_count=valid_count+1
if chengji>=90:
excellent_count+=1
else:
print("成绩无效")
continue
else:
print(f"平均分是{total_score/n:.2f}")

练习2:
打印除1-100之间所有的素数(也叫质数) 除了1和它本身,不能被其他数整除的数
image

While 表达式(条件):
xxx循环体

练习:while 10次hello python

计数器(记录控制while循环的次数)

i=1
While i<=10:
Print(“hello,python”)
i+=1 (如果没有i=i+1,会一直循环)

用while语句送花
i=1
while i<=7:
j=1
while j<10:
print(f"今天是第{i}天,这是第{j}朵花")
j+=1
i+=1

9*9乘法表

image
image

三元运算符

image

中断循环的关键字 break continue
image

死循环 你想和我当饭搭子吗???

while True:
a=input("你想和我当饭搭子吗???")
if a=="是":
break

image

import random

random=random.randint(1,3)

print(random)

user_total = 0
con_total=0
while True:
print("猜拳游戏规则:「石头(1)、剪刀(2)、布(3)」")
user = int(input("请出拳"))
random1 = random.randint(1, 3)
if (user1 and random12) or (user2 and random13) or (user3 and random11):
print(f"用户出的是{user},计算机出的是{random1},用户胜利")
user_total += 1
elif userrandom1:
print("平局")
else:
print(f"用户出的是{user},计算机出的是{random1},用户输了")
con_total +=1
a = input("是否退出游戏:0表示退出,1继续")
if a
"0":
print(f"计算机:user={con_total}:{user_total}")
Break

image

Print(len(“1234”)) 显示字符长度

correct_passwd="1234"
num=3
print("进入系统")
while num>0:
passwd=input("请输入四位数密码:")
#检查是否是四位数
if len(passwd)!=4:
continue #不消耗尝试次数
if passwd==correct_passwd:
print("密码正确,锁已打开")
break #退出程序
else:
num-=1 #减少尝试次数
if num>0:
print(f"密码错误,剩余{num}次机会")
else:
print("密码错误次数过多,锁已锁定")

作业:
缑欣:

题目描述

模拟一个数字密码锁的工作过程,规则如下:

1. 初始密码为四位数:1234

2. 用户有3次输入密码的机会

3. 每次输入后:

- 若密码正确,提示"密码正确,锁已打开"并结束程序

- 若密码错误,提示"密码错误,剩余X次机会"

- 若输入的不是四位数,提示"请输入四位数密码",不消耗尝试次数

4. 额外功能:

- 连续输错3次后,提示"密码错误次数过多,锁已锁定"

- 锁定后询问是否重置(y/n),输入y则重新获得3次机会,输入n则退出程序

缑欣:
作业:题目要求
程序随机生成 1-20 的整数作为答案,玩家有 5 次猜测机会,规则如下:
用 for 循环控制 5 次猜测机会,每次输入猜测的数;
若猜对,打印 “恭喜!第 X 次猜对了” 并提前结束游戏;
若猜错,提示 “猜大了” 或 “猜小了”,并显示剩余次数;
5 次都猜错,打印 “游戏结束,正确答案是 XX”。

缑欣:
练习题 3:模拟 ATM 机系统(多功能 + 安全验证)
题目要求
模拟一个简易 ATM 机操作,功能包括:
登录验证:预设账号("123456")和密码("654321"),允许最多 3 次输入错误,超过则锁定(退出程序);
主菜单:登录后显示 “查询余额、存款、取款、转账、退出” 选项;
核心功能:
存款:输入金额(正整数),余额增加;
取款:输入金额(正整数),需判断是否≤余额,否则提示 “余额不足”;
转账:输入目标账号(非空)和金额(正整数),需判断金额≤余额,转账后余额减少;
查询余额:显示当前余额;
用 while 循环控制主菜单持续运行,输入 “退出” 则结束程序。
解题思路
登录阶段:用 while 循环控制登录次数(最多 3 次),for 循环可辅助计数,if 判断账号密码是否正确,错误次数达 3 次则退出;
初始化账户信息:余额(如 1000 元)、当前账号;
主菜单阶段:用 while True 循环持续显示选项,用户输入选项后,用 if/elif 分支执行对应功能;
各功能逻辑:
存款 / 取款 / 转账:用 if 判断输入金额是否为正整数(简化处理,假设输入合法),取款 / 转账需额外判断金额≤余额;
转账需验证目标账号非空(if target_account.strip() == "");
输入 “退出” 时,用 break 退出主循环,程序结束。

缑欣:
输入一个正整数 n,使用 while 循环统计 1 到 n 之间(含 n)所有 “既是偶数又能被 4 整除” 的数,并打印:
这些数的总和;
这些数的个数。
示例:输入 n=10,符合条件的数为 4、8,总和 12,个数 2。

缑欣:
输入一个正整数 k(2≤k≤5),使用 嵌套 for 循环 打印对称数字图案,规则:
共 k 行,第 i 行(从 1 开始)打印 i 个数字,数字从 1 递增到 i;
每行数字之间用空格分隔。
示例:输入 k=3,输出:
image

缑欣:
输入一个正整数 k(k 为奇数,3≤k≤7),使用 嵌套 for 循环 打印由星号(*)组成的菱形,菱形的对角线长度为 k。示例:输入 k=5,输出:
image

缑欣:
输入商品价格 price(整数,0 < price < 100)和支付金额 payment(整数,payment ≥ price),计算找零金额并使用 最少硬币数 组合(硬币面额:1 元、5 元、10 元、20 元)。示例:找零 36 元,最优组合为 20+10+5+1(共 4 枚)。

posted @ 2025-09-28 11:29  ocmji  阅读(13)  评论(0)    收藏  举报