Python如何判断输入成绩为空时终止程序并输出排序结果
成绩程序改造实现方案
- 原有程序的设计是固定次数录入所有学生成绩,完成录入后对成绩做升序排序输出
- 本次改造目标:当用户在输入成绩时,没有输入任何内容直接按回车提交,程序立刻终止录入流程,将已录入的成绩按升序排序后输出
- 目前卡壳的点:不知道用什么判断逻辑识别空输入,触发提前结束、打印结果的流程
现有代码的待调整点
- 循环外单独写的一行
score=int(input("Please enter the student's score:"))是冗余代码,会在正式循环开始前多要求一次输入 - 循环写死了执行7次(
range(1,8)),没有预留提前退出的分支,没法响应空输入的终止要求 - 循环内的逻辑顺序反了:先执行
mes.sort()再往列表里append新成绩,第一次循环的排序操作完全没有效果 - 直接对input的返回值强转int的写法有问题:input拿到的永远是字符串,用户直接按回车时返回的是空字符串
"",这时候直接转int会触发类型报错,程序直接崩溃,根本走不到空值判断的环节
核心判断逻辑
最关键的注意事项:拿到input的返回值先不要转整数,先保留原始字符串状态做判断
- input函数的返回值固定是字符串类型:如果用户直接按回车、没有输入任何内容,返回的就是长度为0的空字符串
"" - 只要写判断
if 原始输入值 == "":,就能准确识别空输入的场景 - 检测到空输入后直接用break跳出录入循环,再执行排序、打印结果的流程就可以
可直接运行的改造代码
# 初始化空列表存成绩 score_list = [] # 用无限循环做录入,碰到空输入才退出 while True: # 先拿到原始的字符串输入,不提前做类型转换 raw_input = input("请输入学生成绩:") # 判断是空输入,触发跳出 if raw_input == "": break # 非空输入再转成整数存入列表 score = int(raw_input) score_list.append(score) # 对已录的成绩做升序排序 score_list.sort() print(f"从小到大排序的成绩为: {score_list}")
实际运行效果
请输入学生成绩:89 请输入学生成绩:38 请输入学生成绩:49 请输入学生成绩:77 请输入学生成绩:38 请输入学生成绩:39 请输入学生成绩: 从小到大排序的成绩为: [38, 38, 39, 49, 77, 89]
内容的提问来源于stack exchange,提问作者user14761693
相关产品推荐
相关产品推荐

