Python 编程1000例(4):比较数字和字符串大小

本系列文章通过 1000(一篇文章表示 1 个实例) 个实例 ,为读者提供较为详细的练习题目,以便读者举一反三,深度学习。本系列的文章涉及到 Python 知识点包括:Python 语言基础、运算符和表达式、语句和程序结构、列表和元组、字典和集合、字符串、正则表达式、函数、面向对象编程、模块和包、异常处理和程序调试、文件和目录操作、数据库编程、界面编程、网络编程、WEB 编程、进程和线程、网络爬虫、游戏编程等知识点,由易到难,由浅入深,一步步打下坚实的编程基础。

本系列文章涉及的算法包括搜索、回溯、递归、排序、迭代、贪心、分治和动态规划等,涉及的数据结构包括字符串、列表、指针、区间、队列、矩阵、堆栈、链表、哈希表、线段树、二叉树、二叉搜索树和图结构等。

本系列文章是笔者为适应当前教育改革的创新要求,更好地践行语言类课程,满足实践教学与创新能力培养的需要,阅读大量书籍、各大互联网公司的面试算法、LintCode、LeetCode、九章算法和结合笔者近几年项目经验编写的系列文章,精选了 1000 个趣味性、实用性强的应用实例,从不同难度、不同算法、不同类型和不同数据结构等方面,将实际算法进行总结,希望为 Python 编程人员抛砖引玉。由于笔者经验与水平有限,博文中疏漏及不妥之处在所难免,衷心地希望各位读者在评论区多提宝贵意见及具体的修改建议,以便笔者进一步修改和完善。

一、比较数字大小

需求:要求输入三个整数x、y、z,通过比较大小,找出其中最大的数。

知识点:比较运算符也称关系运算符,需要两个操作数,运算返回值是布尔值。在 Python 中,比较运算符共计 6 个,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。如下表所示:

运 算 符 描 述 示 例
> 大于 (10 > 20) # 返回 False
< 小于 (10 < 20) # 返回 True
>= 大于等于 (10 >= 20) # 返回 False
<= 小于等于 (10 <= 20) # 返回 True
== 比较两个对象是否相等 (10 == 20) # 返回 False
!= 比较两个对象是否不相等 (10 != 20) # 返回 True

注意事项如下:

  1. 比较大小关系共包含 4 个运算符,两个操作数类型必须相同,否则 Python 会抛出异常
  2. 比较运算符的操作数可以是字符串或数字类型的值。如果是数字,则直接比较大小;如果是字符串,则根据每个字符在字符编码表中的编码值,从左到右按顺序比较字符串中每个字符。
  3. 如果操作数是布尔值,则先转换为数字,True 为 1,False 为 0,再进行比较。
  4. 比较相等关系的两个操作数没有类型限制。如果类型不同,则直接返回 False,如果类型相同,再比较值是否相同,如果相同,则返回 True,否则返回 False。

示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:7.比较数字大小.py
@time:2021/01/18
"""

# 由于题目要求键盘输入,所以要使用input()函数
x = int(input("请输入x的值: ").strip())  # 输入变量x
y = int(input("请输入y的值: ").strip())  # 输入变量y
z = int(input("请输入z的值: ").strip())  # 输入变量z
if x > y and x > z:  # 如果x是最大数
    print(f"三个数中最大的值为: {x}")  # 输出x的值
elif y > z:  # 如果x不是最大数,而且y比z大
    print(f"三个数中最大的值为: {y}")  # 输出y的值
else:  # 条件都不成立,z就是最大数
    print(f"三个数中最大的值为: {z}")  # 输出z的值

程序运行结果如下:
在这里插入图片描述
在上面示例的基础上将输入的三个数按照从小到大的顺序输出,完整代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:7-1.比较数字大小(从小到大输出).py
@time:2021/01/18
"""

# 由于题目要求键盘输入,所以要使用input()函数
x = int(input("请输入x的值: ").strip())  # 输入变量x
y = int(input("请输入y的值: ").strip())  # 输入变量y
z = int(input("请输入z的值: ").strip())  # 输入变量z

if x > y:  # 如果x大于y,交换x和y的值
    t = x
    x = y
    y = t

if x > z:  # 如果x大于z,交换x和z的值
    t = z
    z = x
    x = t

if y > z:  # 如果y大于z,交换y和z的值
    t = y
    y = z
    z = t

print(f"三个数的大小顺序是:{x},{y},{z}")  # 经过交换,x、y、z就按从小到大排好序了

程序运行结果如下:
在这里插入图片描述

二、比较字符串大小

需求:要求用户输入三个字符串,并比较出这三个字符串的大小。两个字符串比较大小时,是按照从左到右的顺序,依次比较相应位置的字符的 ASCII 码值的大小。程序运行效果如下:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:8.比较字符串大小.py
@time:2021/01/19
"""

str1 = input("input string: ").strip()  # 接收字符串
str2 = input("input string: ").strip()  # 接收字符串
str3 = input("input string: ").strip()  # 接收字符串
print(f"before sorted: {str1} {str2} {str3}")  # 打印排序前的字符串的顺序
if str1 > str2:  # 判断两个字符串的大小
    str1, str2 = str2, str1  # 这样str1留下的就是较小值
if str1 > str3:
    str1, str3 = str3, str1  # 这样str1就是最小值了
if str2 > str3:
    str2, str3 = str3, str2
print(f"after sorted: {str1} {str2} {str3}")

三、统计和筛选学生成绩

需求:设计一个简单的程序,计算学生语文成绩的平均分,筛选出优秀生名单,输出最高分,程序运行结果如下所示:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:9.统计和筛选学生成绩.py
@time:2021/01/19
"""

china = {
    
    
    "张三": 89,
    "李四": 76,
    "王五": 95,
    "赵六": 64,
    "候七": 86,
}

grade_sum = 0  # 总分,初始为0
grade_max = 0  # 最高分,初始为0
max_name = ""  # 最高分学生姓名,初始为空
print("语文优秀生名单: ")
for i in china:  # 迭代成绩表
    grade_sum += china[i]  # 汇总分数
    if china[i] >= 85:  # 如果成绩大于等于85,则为优秀生
        print(f"\t{i}({china[i]})")
    if china[i] > grade_max:  # 过滤最高分
        grade_max = china[i]  # 记录最高分
        max_name = i  # 记录最高分的学生姓名
print()  # 空行
print(f"语文平均分: {grade_sum / len(china):.2f}")  # 输出平均分
print(f"语文最高分: {grade_max}({max_name})")  # 输出最高分

总结:在上面的代码中,使用字典结构记录学生成绩,通过 len() 函数获取字典中包含学生的总人数。

感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

猜你喜欢

转载自blog.csdn.net/xw1680/article/details/112794902