[python刷题]print()函数中的and和or

本文深入解析Python中的and与or运算符工作原理,通过实例展示如何根据左侧表达式的真假决定是否继续评估右侧表达式,以及返回值的具体规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、规则

(1)在纯and语句中,如果每一个表达式都不是假的话,那么返回最后一个,因为需要一直匹配直到最后一个。如果有一个是假,那么返回假
(2)在纯or语句中,只要有一个表达式不是假的话,那么就返回这个表达式的值。只有所有都是假,才返回假
(3)在or和and语句比较难表达,总而言之,碰到and就往后匹配,碰到or如果or左边的为真,那么就返回or左边的那个值,如果or左边为假,继续匹配or右边的参数。

2、例子

(False or 1)  输出1

  (1 or False)    输出1

(True or 1)输出前者

  (1 or True)   输出前者

(True and 1) 输出后者

  (1 and True)    输出后者

(False and 1)输出False

  (1 and False)  输出False

### 使用 Python 开发考试系统 #### 设计思路 构建一个有效的练习系统能够显著增强用户的编程技能并提供互动性强的学习体验[^1]。该系统不仅应具备基础功能,如目显示、用户输入接收以及答案验证等功能;还应该支持多种类型的习,包括但不限于选择、填空编程。 #### 功能模块划分 为了实现上述目标,可以将整个项目划分为几个主要的功能模块: - **数据库管理**:负责存储试及其选项、正确答案等信息; - **界面设计**:用于呈现给用户的图形化操作界面或命令行接口; - **逻辑控制层**:处理业务流程,比如随机抽取目、判断答情况等; - **统计分析工具**:记录每次测试的成绩变化趋势,辅助评估学习效果。 #### 数据库结构规划 考虑到数据持久性查询效率的要求,在此推荐采用关系型数据库 MySQL 来保存所有的考资源。表的设计应当至少包含如下字段: | 字段名 | 类型 | 描述 | | --- | --- | --- | | id | INT PRIMARY KEY AUTO_INCREMENT | 唯一标识符 | | question_type | VARCHAR(20) | 目类型 (单选/多选/判断...)| | content | TEXT NOT NULL | 干描述 | | options | JSON DEFAULT NULL | 可能的选择项列表(仅适用于选择类目)| | answer | VARCHAR(255)| 正确答案 | 对于连接到MySQL服务器的部分,初始化函数`__init__()`接受主机地址(`host`)、用户名(`user`)、密码(`passwd`)作为参数,并允许指定默认使用的数据库名称(`dbName`)及字符集编码(`charset`)设置为UTF-8以确保兼容性[^4]。 ```python import mysql.connector as mc class QuestionDB: def __init__(self, host, user, passwd, dbName='', charset='utf8'): self.conn = mc.connect( host=host, user=user, password=passwd, database=dbName or None, charset=charset ) ``` #### 用户交互部分 为了让用户体验更加友好直观,可以选择基于Tkinter或其他GUI框架来搭建前端页面;当然如果追求简洁快速的话,则可以直接利用标准输入输出完成基本的任务需求。 下面给出一段简单的代码片段用来模拟一次完整的问答过程: ```python from random import choice def fetch_random_question(cursor): cursor.execute('SELECT * FROM questions') all_questions = list(cursor.fetchall()) return choice(all_questions) if __name__ == '__main__': db = QuestionDB(host="localhost", user="root", passwd="password", dbName="exam_db") with db.conn.cursor(dictionary=True) as cur: q_info = fetch_random_question(cur) print(f'Question: {q_info["content"]}') if 'options' in q_info and isinstance(q_info['options'], str): # 处理JSON字符串形式的选项 opts_dict = eval(q_info['options']) for k,v in opts_dict.items(): print(f'{k}. {v}') usr_ans = input('\nYour Answer:') is_correct = usr_ans.strip().lower() == q_info['answer'].strip().lower() feedback_msg = "Correct!" if is_correct else f"Incorrect. The correct answer was '{q_info['answer']}'" print(feedback_msg) ``` 这段脚本实现了从预定义好的问集中随机选取一道目供玩家作答,并即时反馈其正误状况。实际应用中可能还需要加入更多细节考量,例如防止重复抽问相同内容、增加时间限制等等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值