P21作业讲解
'''
键盘上输入以下内容并打印输出:
默认(admin,1234)
用户名: username
密码: password
是否记住密码bool类型,is_remember
如果用户名和密码正确并且is_remember是True表示记住密码,则打印已经记住用户xxx的密码啦
否则打印,没有记住密码需要下次继续输入的。
'''
username = input('请输入用户名:')
password = int(input('请输入密码'))
is_remember = input('是否记住密码(T/F):')
if username == 'admin' and password == 1234:
if is_remember == 'T':
print('已经记住用户%s的密码啦' % username)
else:
print('没有记住密码需要下次继续输入')
else:
print('用户名或密码有误!')
'''
模拟超市付款:商品单价 商品数量
键盘上输入商品单价,以及商品数量
计算应付总额
计算总额 float
提示用户可以有4种付款方式
不同的付款方式有不同的折扣:先展示4中付款方式
现金没有折扣
微信 0.95折
支付宝 鼓励金付款金额的10% 鼓励金可以直接折算到付款金额中
刷卡 满100-20
'''
print('欢迎光临xx超市')
price = float(input('请输入商品单价:'))
num = int(input('商品数量:'))
# 计算总额
total = price * num
# 选择付款方式
choice = input('选择付款方式:1.现金,2.wx 3.zfb 4.卡')
# 判断
if choice == '1':
print('现金没有折扣,应付金额:%.2f' % total)
elif choice == '2':
print('wx支付打95折,应付金额:0.95*%.2f' % total)
elif choice == '3':
# 支付宝 鼓励金付款金额的10% 鼓励金可以直接折算到付款金额中
total = total - total * 0.1
print('zfb支付..,应付金额:%.2f' % total)
elif choice == '4':
# 刷卡 满100 - 20
# if total % 100 == 0:
# if total > 100:
# total = total - 20
#
# else:
# print('无折扣')
# 每满100-20
if total > 100:
a = total // 100
total = total - 20 * a
else:
print('无折扣')
print('刷卡.. 应付金额:%.2f' % total)
P22 if补充内容+while循环
- if补充内容
在python中,转换成为布尔值时,只有0,‘’ ,“” , None, () , {} , [] 会转换成为False,其他都会被转换为True
a = 1
b = 2
# if a > b:
# c = a
# else:
# c = b
# print(a, b, c)
# c = a if a > b else b
# print(a, b, c)
# 0表示假
if 0:
print('111')
else:
print('000')
# 000
# 在引号里面没有内容,表示字符串里面没内容,所以是假
if '':
print('111')
else:
print('000')
# 000
# 在引号里面的0,表示字符串里面有内容,所以是真
if '0':
print('111')
else:
print('000')
# 111
- while循环
'''
循环:
场景:
1. 用户名和密码
2. 计算1-100
3. 游戏,死而复生
4.。。。
方式:
1. while
2. for
while格式:
while 条件:
要循环执行的代码
条件--布尔类型
'''
# 打印1-10之间的数字
# 初始值
n = 1
# 结束条件 条件为真
while n < 11:
# 变量要有变化
n = n + 1
print('-----> n=%d' % n)
- 练习
'''
打印1-50之间能被3整除的数字
'''
n = 1
while n <= 50:
n += 1
if n % 3 == 0:
print(n)
n = 3
while n <= 50:
print(n)
n += 3
n = 0
while n < 50:
n += 1
if n // 3 * 3 == n:
print(n)
'''
打印1-10之间数字的累加和
'''
n = 1
sum = 0
while n <=10:
n += 1
sum = sum + n
print(n)
- 练习2
'''
去超市买东西,价格和数量,允许买多件商品
计算所有商品的总额
'''
total = 0
nums = 0
while True:
price = float(input('请输入价格'))
num = int(input('请输入数量:'))
# 累加
total += price * num
# 数量累加
nums += num
# 判断是否继续购买
answer = input('需要添加商品?q表示退出' % total)
if answer == 'q':
break
print('商品数量共:%d,总额为%.2f' % (nums, total))
# count = 0
# while True: # true在while后,相当于死循环
# print('111111')
# count += 1
# if count == 5:
# break # 跳出当前的循环结构
# total = 0
# while True:
# #先买
# price= input('输入价格:')
# number = int(input('输入数量:'))
# # 累加
# total += price*number
#
# print('1111111111')
# # 判断是否继续购买商品
# answer = input('当前商品总额,%.2f,是否继续添加商品?(q表示退出)' % total)
# if answer == 'q':
# # 跳出while循环
# break
# print('所有商品的总额;%.2f' % total)
- 练习3
'''
产生随机数 random.randint(start,end)
可以猜多次直到猜对为止
如果猜错了,适当给出范围提示,猜大了or小了
1.统计猜的次数
2.如果1次就中,运气很好
2-5次,猜对了运气还行
6次以上,猜对了运气一般
'''
import random
ran = random.randint(1, 50)
print(ran)
count = 0
while True:
guess = int(input('请输入1-50猜测数字:'))
count += 1
if guess < ran:
print('猜小了')
# 猜对就结束
elif guess == ran:
if count == 1:
print('只猜了%d次,运气爆棚' % count)
elif 2 <= count <= 5:
print('猜了%d次,运气还行' % count)
else:
print('猜了%d次,运气一般' % count)
break
else:
print('猜大了')
- 练习4
'''
猜拳游戏: 3局2胜
'''
import random
n = 1
# 计数
p_count = 0
m_count = 0
while n <= 3:
# 猜拳
# 机器产生数字 0 1 2
ran1 = random.randint(0, 2)
# 人猜数字
guess = int(input('请输入:剪刀(0)石头(1)布(2)\n'))
# 比较判断
if (guess == 0 and ran1 == 2) or guess == 1 and ran1 == 0 or guess == 2 and ran1 == 1:
print('赢了')
p_count += 1
elif ran1 == 0 and guess == 2 or ran1 == 1 and guess == 0 or ran1 == 2 and guess == 1:
print('输了')
m_count += 1
else:
print('平局')
# n的变化
n += 1
# 比较胜负
if p_count > m_count:
print('最终赢了')
elif p_count == m_count:
print('本轮平局')
else:
print('最终输了')
P26 for循环语句
'''
其他语言:
for(){
循环体
}
格式:
for 变量名 in range(n):
循环体中的内容
range(n):从0开始取值到n-1结束
range(start,stop):[start,stop) 包含前面不包含后边
range(start,stop,step):默认从start(包含)开始取值到stop(不包含)结束,其中步长由step指定
'''
# 1-10 数字打印
for i in range(10):
print(i) # 0-9
print('\n')
for i in range(1, 11):
print(i)
for i in range(1, 10, 2): # 第三位是步长
print(i)
# 1
# 3
# 5
# 7
# 9
# 1-50的累加和 for实现
sum = 0
for i in range(1, 51):
sum += i
print(sum)
# 输入用户名和密码,如果三次没有登陆成功,提示账号被锁定
# break 退出
for i in range(3):
#提示输入用户名和密码
username = input('用户名')
password = input('密码')
# 判断输入是否正确 admin 1234
if username == 'admin' and password == '1234':
print('登陆成功')
break
if i == 2: # i可以用,但是有警告,因为i是在for里面定义的变量
print('账户被锁定!')
# 这种写法还有缺陷,需要完善
P27 for和while的区别和游戏需求
'''
for..else
if 条件:
pass
else:
pass
for i in range(n):
循环体
else:
如果上面的for循环0~n-1没有出现中断(break)
while..else
for..else
注意else的特点:不被中断则执行,否则不执行。
'''
# for i in range(3):
# username= input('用户名:')
# password = input('密码:')
# if username == 'admin' and password == '1234':
# print('登陆成功')
# break
# else:
# print('登陆失败\n')
# else:
# print('账户被锁定')
# while..else
n = 1
while n <= 10:
print(n)
# if n==5:
# break
n += 1
else:
print('over')
- 掷骰子游戏(练习)
'''
for i in range(n): ----> 肯定是有固定次数
pass
while 条件: ---> 1、固定次数的循环 2、不确定次数的循环
pass
#不确定次数的循环
while True:
pass
掷骰子
两个: 1-6
1. 玩游戏要有金币,没金币不能玩游戏
2. 玩游戏挣金币1枚,充值获取金币
3. 10元的倍数,20个金币10元
4. 一局消耗5个金币
5. 猜大小:猜对 金币2枚 猜错没奖励 两个骰子点数相加超过6则是大
6. 游戏结束:1.主动退出 2.没金币退出
7. 退出则打印金币数,共玩了几局
'''
import random
coins = 0
count = 0
if coins<5:
# 提示充值
print('金币不足,请充值再玩')
money = int(input('请输入充值金额,十的倍数'))
# 10元的倍数,20个金币
if money % 10==0:
coins+=money//10*20
print('充值成功,当前金币有%d个' % coins)
# 开始游戏
print('~~~~~开始游戏~~~~~~')
answer= input('是否开始游戏(y/n)')
while coins>5 and answer=='y':
# 扣金币
coins -= 5
# 赠金币
coins +=1
# 产生两枚随机骰子数
ran1 = random.randint(1,6)
ran2 = random.randint(1,6)
# 猜大小
guess = input('洗牌完毕,请猜大小:')
# 判断比较
if guess == '大' and ran1+ran2>6 or guess=='小' and ran1+ran2<=6:
print('恭喜猜对了,你赢了')
coins+=2
else:
print('猜错了')
# 玩的次数
count+=1
answer = input('是否继续游戏(y/n)')
# 打印 次数 金币
print('共玩了%d次,剩余金币数:%d' % (count,coins))
break
else:
print('不是10的倍数,无法充值')
P29 跳转语句和嵌套循环
跳转语句
'''
break
continue
都是出现在循环中
不同:
break 跳出循环结构
continue 跳过本次循环(后面的语句不执行),继续下一次循环
'''
# 不打印能被3整除的数
# for i in range(10):
# if i%3!=0:
# print(i)
for i in range(10):
if i%3==0:
continue
print(i)
循环嵌套
练习(倒三角)
'''
循环嵌套:
if 条件:
if 条件:
pass
else;
if 条件:
pass
while循环:
*
**
***
****
*****
'''
n = 1
while n <= 4:
print('*' * 4)
n += 1
'''
****
****
****
'''
print('---------')
n = 1
while n <= 4:
print('*' * n)
n += 1
'''
*
**
***
****
'''
n=1
while n<=5:
m = 0
while m<n:
print('*',end='')
m+=1
n+=1
print()
'''
***
**
*
'''
print('----------------')
n=1
while n<=3:
m=3
while m >= n:
print('*',end='')
m-=1
n+=1
print()
'''
for 循环
'''
print('----------------')
for n in range(5):
for m in range(0,5-n):
print('*',end='')
print()
'''
*****
****
***
**
*
'''
P30 review
-
流程控制:
条件语句:
嵌套语句循环语句:while:1.初始值 2.条件(结束) 3. 变量改变
-
break continue区别
break是整个循环中断 continue是这一次中断,还会继续
-
while…else
-
for:
for i range(n):
pass
| range(stop): 0 ~ stop-1
| range(start,stop):start~stop-1
| range(start, stop, step): start~stop-1 步长;step -
for…else
嵌套:
while n < 5: #外层控制行数
...
while m<n:
print('*',end='') #内层控制打印*
n+=1
print()
for i in range(n):
for j in range(n-i)
print('*',end='')
print()