python学习笔记(三)P21-30

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()
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值