Python学习笔记:第四站 往哪走

news/2024/11/24 7:54:02/

Python学习笔记

文章目录

  • Python学习笔记
  • 第四站 往哪走
    • 1. 程序的组织结构
    • 2. 顺序结构
    • 3. 对象的布尔值
    • 4. 分支结构
    • 5. pass空语句
    • 6. 本章作业

课程笔记参考B站视频: Python全栈开发教程。


第四站 往哪走

1. 程序的组织结构

1996年,计算机科学家证明了这样的事实:任何简单或复杂的算法都可以由顺序结构选择结构循环结构这三种基本结构组合而成。

计算机的流程控制
顺序结构
选择结构
if语句
循环结构
while语句, for in语句

本章只介绍顺序结构和选择结构,循环结构将在下一章演示。

2. 顺序结构

顺序结构 就是程序从上到下顺序地执行代码,中间没有任何的判断和跳转,直到程序结束。下面是代码示例:

# 演示顺序结构
"""把大象放冰箱一共分几步?"""
print('--------程序开始----------')
print('1. 把冰箱门打开')
print('1. 把大象放进去')
print('1. 把冰箱门关上')
print('--------程序结束----------')

在某一行添加断点,然后点击小虫子(调试),即可进入到调试模式。

3. 对象的布尔值

Python一切皆对象,所有对象都有一个布尔值。要获取对象的布尔值,可以使用内置函数bool()。除了以下对象的布尔值为False,其他对象的布尔值都为True:

False、数值0、None、空字符串、空列表、空元组、空字典、空集合。

下面是代码示例:

# 测试对象的布尔值
print('------以下对象的布尔值都为False-------')
print(bool(False))      # 布尔元素False
print(bool(0))          # 数值0
print(bool(0.0))        # 数值0
print(bool(None))       # None
print(bool(''))         # 空字符串(双引号等也可以)
print(bool(list()))     # 空列表
print(bool([]))         # 空列表
print(bool(tuple()))    # 空元组
print(bool(()))         # 空元组
print(bool(dict()))     # 空字典
print(bool({}))         # 空字典
print(bool(set()))      # 空集合
print('------其余对象的布尔值都为True-------')
print(bool(18))
  • 运行结果
------以下对象的布尔值都为False-------
False
False
False
False
False
False
False
False
False
False
False
False
------其余对象的布尔值都为True-------
True

4. 分支结构

选择结构就是程序根据判断条件的布尔值选择性地执行部分代码,明确的让计算机知道在什么条件下,该去做什么。本节将主要介绍选择结构的语法

1. 单分支if结构
单分支结构在中文语义中,就是 “如果满足…就…”。
下面是代码示例:

# 演示单分支结构
money = 1000 # 余额
drawback = int(input('请输入取款金额 '))
# 判断余额是否充足
if money>=drawback:money -= drawbackprint('取款成功,余额为', money)

2. 双分支if…else结构
双分支结构在中文语义中,就是 “如果满足…就…,若不满足…就…”。
下面是代码示例:

print('----------运行奇偶判断器-----------')
num = int(input('请输入一个整数:'))
if num%2:print(num, '为奇数')
else:print(num, '为偶数')
print('------------判断完成--------------')

注意到最后一个print()和谁对齐就属于那哪个结构,也就是说,Python是一个靠对齐划分结构块的语言。

3. 多分支if…elif…else结构
在双分支结构的基础上,若再增加判断条件及后续行为,即为多分支结构。多分支结构中的最后一个else可以不写。
下面是代码示例:

print('-----------运行成绩转换器-----------')
print('--作用:将百分制成绩转换成五分制成绩---')
score = float(input('请输入百分制成绩:'))
if score>=90 and score<=100:print('成绩为:A')
elif 80<=score<90:print('成绩为:B')
elif 70<=score<80:print('成绩为:C')
elif 60<=score<70:print('成绩为:D')
elif 0<=score<60:print('成绩为:E')
else:print('输入成绩不在范围内:', score)
print('--------------运行结束-------------')

注意到上述判断条件,Python可以将两个与的条件写成连续比较的格式

另外,Python没有switch/case语句。为了达到这种分支语句的效果,一般方法是使用字典映射,具体可以参考 Python为什么没有switch/case语句?。

4. If语句的嵌套
if嵌套的意思就是在某一个条件中又执行了一次条件判断。
下面是代码示例:

note = """超市打折说明:
会员: >= 200   8折>= 100   9折其他不打折
非会员: >= 200 9.5折其他不打折"""
print(note)
print('--------运行超市打折计算程序-------')
ident = input('这位顾客是会员吗?y/n:')
if ident!='Y' and ident!='y' and ident!='N' and ident!='n':print('顾客身份确认错误:', ident)
else:points = float(input('请输入当前购物金额:'))if ident=='y' or ident=='Y':if points>=200:print('请给这位尊贵的会员打8折,消费' + "%.2f"%(points*0.8) + '元')elif 100<=points<200:print('请给这位尊贵的会员打9折,消费' + "%.2f"%(points*0.9) + '元')elif 0<=points<100:print('抱歉不能打折,消费' + "%.2f"%points + '元')else:print('购物金额输入错误:', points)elif ident=='n' or ident=='N':if points>=200:print('请给这位顾客打9.5折,消费' + "%.2f"%(points*0.95) + '元')elif 0<=points<200:print('抱歉不能打折,消费' + "%.2f"%points + '元')else:print('购物金额输入错误:', points)
print('-------------运行结束------------')

5. 条件表达式
条件表达式是if…else…的简写,语法结构为:

x if 判断条件 else y

运算规则是如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为y

下面是代码示例:

print('演示条件表达式的使用:')
print('---------运行大小比较器----------')
num_a = float(input('请输入第一个数:'))
num_b = float(input('请输入第二个数:'))
print(str(num_a)+' ≥ '+str(num_b)  if num_a>=num_b else str(num_a)+' < '+str(num_b))
print('------------运行结束------------')

注意,上述这个用法就是Python中的三元运算符

5. pass空语句

pass语句没有实际的执行操作,只是一个占位符,用在语法上需要语句的地方。使用场景:

先搭建语法结构,还没想好代码怎么写的时候。

可以使用pass()语句的结构有:

  1. if语句的条件执行体
  2. for-in语句的循环体
  3. 定义函数时的函数体

下面是代码示例:

# 演示pass的使用
answer = input('吃了吗?y/n:')
if answer=='y':pass
else:pass
# 上面这样写不会出现语法报错

注:弹幕中有人说这个语句的作用是“合理的交白卷”,我觉得言之有理😂。

6. 本章作业

1. 支付密码格式验证

说明:

检测输入的字符,若全为数字,显示“支付密码合法”
否则显示“支付数字不合法,支付密码只能是数字”

下面是代码示例:

pwd = input('请输入支付密码:')
print('方法一:使用if...else'.center(25,'-'))
if pwd.isdigit():print('支付数据合法')
else:print('支付数据不合法!支付密码只能是数字')
print('方法二:使用条件表达式'.center(25,'-'))
print('支付数据合法' if pwd.isdigit() else '支付数据不合法!支付密码只能是数字')
  • 运行结果
请输入支付密码:888a
-----方法一:使用if...else-----
支付数据不合法!支付密码只能是数字
--------方法二:使用条件判断-------
支付数据不合法!支付密码只能是数字

下面给出了三种字符串判断数字的方法的区别(参考文章 “Python中isdigit()和isnumeric()的区别”):

isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无
isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)

2. 模拟QQ账号登录

说明:

读取用户输入的用户名和密码,若匹配,显示“登录成功”
否则显示“用户名和密码不匹配”

下面是老师的代码示例:

qq=input('请输入QQ号:')
pwd=input('请输入密码:')
if qq=='296626472' and pwd=='123':print('登录成功')
else:print('对不起,账号或密码不正确')
  • 运行结果
请输入QQ号:296626472
请输入密码:123
登录成功

3. 商品价格大竞猜

说明:

输出“今日战机为玄女号,价格在[10000-15000]贡献点之间,请竞猜:”
然后不断显示“大了”、“小了”,直到战机价格匹配显示“猜对了”

本作业的难点在于随机数的生成,下面直接看代码示例:

import random
def in_value():while True:try:value = int(input('今日战机为玄女号,价格在[0-100]贡献点之间,请竞猜:'))except:print('输入错误!',end='')else:breakreturn value
value = in_value()
value_true = random.randint(0,100)
while value_true!=value:if value_true>value:print('猜小了!')else:print('猜大了!')value = in_value()
else:print('你猜对了!然而无事发生...')
  • 运行结果就不放了。

4. 根据星座查看运势

示例:

下面是代码示例:

dic_star = {'白羊座': '''本月贵人星座: 水瓶座
本月小人星座: 双鱼座
本月需要特别关注的日子: 4日、5日、10日、16日、24日
本月DO: 满足自己的情绪需求,改善长期压抑的心情。
本月DON’T: 切勿在冲动之下做决定,三月仍是适合“以静制动”的阶段。''','金牛座': '''本月贵人星座: 金牛座
本月小人星座: 白羊座
本月需要特别关注的日子: 4日、5日、10日、22日、31日
有月DO: 关注情绪需求,留意与未来有关的目标。
本月DON’T: 信任自己的能力,切勿轻信他人的承诺。'''
}
print('注:只能演示白羊座、金牛座。')
in_star = input('请输入你的星座:')
# print(dic_star[in_star])      # 不推荐,有可能会报错
print(dic_star.get(in_star))    # 推荐,及时获取不到也不会报错
  • 运行结果
注:只能演示白羊座、金牛座。
请输入你的星座:546
None

http://www.ppmy.cn/news/583681.html

相关文章

当我们老了,又会怎样

最近在看《我们仨》&#xff0c;一本杨绛先生的散文集。 这本书分为了三部分。第一部分算是个引子&#xff0c;就杨绛先生晚年的一个梦开始&#xff0c;以梦中“钟书大概是记着‘我’的埋怨&#xff0c;叫‘我’做了一个长达万里的梦”拉开全文序幕&#xff1b;第二部分则是描…

第 350 场周赛

A 总行驶距离 纯模拟 class Solution { public:int distanceTraveled(int mainTank, int additionalTank) {int res 0;while (1) {if (mainTank > 5) {res 50;mainTank - 5;if (additionalTank) {additionalTank--;mainTank;}} else {res mainTank * 10;break;}}return …

史上最极品美女乞丐,难道是犀利姐来了?(有图有真相)

昨天在街上闲逛&#xff0c;突然发现路边有个乞丐&#xff0c;跟犀利哥的造型一模一样&#xff01;我K&#xff0c;这年头连乞丐都会追星了&#xff01;仔细一看&#xff0c;丫还是个女的&#xff0c;还挺面熟的。再仔细的看了一眼&#xff0c;晴天霹雳&#xff01;居然是那个讲…

美女搭讪

星期天电磁炉坏了,中午去快餐店吃饭&#xff0c;一个人啊&#xff0c;无奈。 吃着吃着&#xff0c;突然有个美女过来。 她跟我说&#xff1a;一个人么&#xff1f;我脱口而出&#xff1a;对啊 我当时老开心了&#xff0c;居然有美女来搭讪。 结果&#xff0c;结果。。。。 …

经典SQL语句大全二:提升

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1(仅用于SQlServer)法二:select top 0 * into b from a2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f …

古代最具魅惑力十大美女

1、被妖魔化的妲己&#xff1a;每个王朝的沦亡&#xff0c;简直都与一个红颜祸水的传说有关。最著名的例子要算“妲己亡殷”&#xff0c;传说中的妲己不只荒淫狐媚&#xff0c;而且性情残忍&#xff0c;纣王迷于妲己的美色&#xff0c;对她百依百顺&#xff0c;妲己狐媚惑主&am…