鱼C论坛

 找回密码
 立即注册
查看: 151|回复: 22

[技术交流] 第六讲作业题,虽然能执行代码,但是自己还是没有看明白,

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求解

自己迷惑了,他到底是怎么运行的?

自己迷惑了,他到底是怎么运行的?

最后一步不会做了

最后一步不会做了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
请把你说的“第六讲作业题”的代码贴出来,我才能帮你分析和讲解哦~

你可以直接把代码粘贴上来,我会用
...
帮你格式化,并一步步解释每一行的含义,确保你能真正理解它的运行原理!

等你贴代码啦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
两张图片就是第六讲课后作业的完整的自己编写的代码截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 19:38
两张图片就是第六讲课后作业的完整的自己编写的代码截 ...


鱼油你好!你提到的“第六讲课后作业”的代码是以截图形式上传的,但目前我还没有收到任何图片内容。为了更好地帮助你理解代码,请你将代码内容直接复制粘贴到这里,或者重新上传截图。

如果你是从 FishC 的 Python 入门课程来的,第六讲通常是关于 条件判断(if 语句)输入输出与类型转换 的内容。你可以告诉我你不理解的是哪一部分,比如:

  • 为什么要用 if
  • 为什么要用 int(input())
  • 代码能运行但结果不符合预期?


只要你把代码贴出来,我就能一步步帮你分析,讲得通俗易懂,保证你能学会!等你啦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
core = int(input('请输入你的分数:'))
if core < 60:
    print('您的成绩评级为:D')
elif 60 <= core < 80:
    print('您的成绩评级为:C')
elif 80 <= core < 90:
    print('您的成绩评级为:B')
elif 90 <= core < 100:
    print('您的成绩评级为:A')
elif core == 100:
    print('您的成绩评级为:S')
else:
    print('输入无效,请输入  到 100 之间的分数。')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
#===动动手===


goule=6
while  goule>0:
    core=int(input('请输入你的分数:' ))
    if core<60:
        print('您的成绩评级为:D')
    elif 80>core>=60:
        print('您的成绩评级为:C')
    elif 90>core>=80:
        print('您的成绩评级为:B')
    elif 100>core>=90:
        print('您的成绩评级为:A')
    elif core==100:
        print('您的成绩评级为:S')
    else:
        if core==e:  这个地方实在不会了
            break
    goule=goule-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 19:39
core = int(input('请输入你的分数:'))
if core < 6 ...


第六讲作业题讲解:成绩评级判断

你写的代码是一个根据分数输出成绩等级的小程序。我们先来看你贴出来的部分代码:
core = int(input('请输入你的分数:'))
if core < 60:
    print('您的成绩评级为:D')
elif 60

这段代码的意思是:

  • input() 获取用户输入的分数;
  • int() 把输入的字符串转换成整数;
  • 判断分数是否小于 60,如果是,就输出 D;
  • 接下来你写了 elif 60,但没有写完整的条件和对应的处理语句。


正确完整的写法应该是这样:
core = int(input('请输入你的分数:'))

if core < 60:
    print('您的成绩评级为:D')
elif core < 70:
    print('您的成绩评级为:C')
elif core < 85:
    print('您的成绩评级为:B')
else:
    print('您的成绩评级为:A')

解释:

  • 如果分数小于 60,评级为 D;
  • 如果分数在 60 到 69 之间,评级为 C;
  • 如果分数在 70 到 84 之间,评级为 B;
  • 如果分数大于等于 85,评级为 A。


小提示: elif 是“否则如果”的意思,用来处理多个条件判断。

如果你还有不懂的地方,欢迎继续提问!我会继续为你讲解~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
#===动动手===


goule=6
while  goule>0:
    core=int(input('请输入你的分数:' ))
    if core<60:
        print('您的成绩评级为:D')
    elif 80>core>=60:
        print('您的成绩评级为:C')
    elif 90>core>=80:
        print('您的成绩评级为:B')
    elif 100>core>=90:
        print('您的成绩评级为:A')
    elif core==100:
        print('您的成绩评级为:S')
    else:
        if core==e:  这个地方实在不会了
            break
    goule=goule-1

帮我纠正一下这段代码的错误问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 19:47
#===动动手===


goule=6
while  goule>0:
    c ...


纠正后的代码如下:
goule = 6
while goule > 0:
    core_input = input('请输入你的分数(或输入 e 退出):')
    if core_input == 'e':
        break
    try:
        core = int(core_input)
        if core == 100:
            print('您的成绩评级为:S')
        elif 90 <= core < 100:
            print('您的成绩评级为:A')
        elif 80 <= core < 90:
            print('您的成绩评级为:B')
        elif 60 <= core < 80:
            print('您的成绩评级为:C')
        else:
            print('您的成绩评级为:D')
    except ValueError:
        print('输入无效,请输入数字或 e 退出。')
    goule = goule - 1

主要修改点说明:

  • corecore 是拼写错误,应该是 core
  • 判断是否退出程序时,原来写的是 if core == e,但 e 没有定义。正确做法是先接收输入为字符串,判断是否为 'e'。
  • 分数判断顺序有误,应该先判断最高分 core == 100,再往下判断。
  • 增加了 try...except 来处理非数字输入的情况,防止程序崩溃。


如果你还有其他问题,欢迎继续提问!我会继续为你讲解~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
进一步讲解一下代码的运行规则

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 19:49
进一步讲解一下代码的运行规则


成绩评级程序运行规则讲解

你写的程序是一个循环输入分数并输出评级的小工具,我们来一步步讲解它的运行逻辑:
goule = 6
while goule > 0:
    core_input = input('请输入你的分数(或输入 e 退出):')
    if core_input == 'e':
        break
    try:
        core = int(core_input)
        if core == 100:
            print('您的成绩评级为:S')
        elif 90 <= core < 100:
            print('您的成绩评级为:A')
        elif 80 <= core < 90:
            print('您的成绩评级为:B')
        elif 60 <= core < 80:
            print('您的成绩评级为:C')
        else:
            print('您的成绩评级为:D')
    except ValueError:
        print('输入无效,请输入数字或 e 退出。')
    goule = goule - 1

运行规则说明

  • goule = 6:设置最多可以输入 6 次成绩。
  • while goule > 0:只要还有机会(goule 大于 0),就继续循环。
  • input():提示用户输入分数,或者输入 e 来退出。
  • if core_input == 'e':如果用户输入的是 e,就用 break 退出循环。
  • try...except:尝试将输入转换为整数,如果失败(比如输入了字母),就提示“输入无效”。
  • if...elif...else:根据分数范围判断评级:
      

        
    • 100 分是 S
        
    • 90~99 是 A
        
    • 80~89 是 B
        
    • 60~79 是 C
        
    • 60 以下是 D
        
  • goule = goule - 1:每次循环后减少一次机会。


小贴士

你原来的代码有几个小问题:
  • 写错了变量名:corecore 应该是 core
  • 判断顺序不合理:应该先判断最高分(100),再往下判断
  • 没有处理非数字输入:加上 try...except 更安全
  • 退出条件写错了:core == e 是错误的,应该先判断输入是否是 'e'


如果你还有不懂的地方,欢迎继续提问!我会继续为你讲解~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
core_input = input('请输入你的分数(或输入 e 退出):')
    if core_input == 'e':
这个语句中每一个符号代表的意思是什么?

判断顺序不合理:应该先判断最高分(100),再往下判断
为什么要从高到低的顺序进行判断呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 20:03
core_input = input('请输入你的分数(或输入 e 退出 ...


语句符号逐个解释 + 判断顺序讲解

你提到的语句:

core_input = input('请输入你的分数(或输入 e 退出):')  
if core_input == 'e':

我们来逐个解释这些符号的含义:

  • =:赋值符号,把右边的值赋给左边的变量。例如 core_input = input(...) 表示把用户输入的内容保存到变量 core_input 中。
  • input(...):获取用户输入的函数,括号中的内容是提示信息,会显示在屏幕上。
  • '请输入你的分数(或输入 e 退出):':这是一个字符串,用来提示用户输入。
  • if:条件判断语句,意思是“如果……就……”
  • ==:比较运算符,判断左右两边是否相等。这里是判断用户输入的内容是否等于字符串 'e'
  • 'e':字符串,表示用户想要退出程序时输入的字符。
  • ::冒号,表示接下来是 if 条件成立时要执行的代码块。


为什么判断顺序要从高到低?

这是一个非常重要的逻辑问题!

假设你写的判断顺序是从低到高:
if core >= 60:
    print("C")
elif core >= 80:
    print("B")
elif core >= 90:
    print("A")
elif core == 100:
    print("S")

如果用户输入的是 95,程序会在第一个 core >= 60 就判断为真,然后输出 C,后面的判断就不会执行了!

所以必须从高分往低分判断,才能确保更高等级的判断优先被执行。

正确的顺序应该是:
if core == 100:
    print("S")
elif core >= 90:
    print("A")
elif core >= 80:
    print("B")
elif core >= 60:
    print("C")
else:
    print("D")

这样才能保证 100 分输出 S,90~99 输出 A,依此类推。

如果你还有不懂的地方,欢迎继续提问!我会继续为你讲解~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
goule=6
while  goule>0:
    core=int(input('请输入你的分数:' ))
    if core<60:
        print('您的成绩评级为:D')
    elif 80>core>=60:
        print('您的成绩评级为:C')
    elif 90>core>=80:
5        print('您的成绩评级为:B')
    elif 100>core>=90:
        print('您的成绩评级为:A')
    elif core==100:
        print('您的成绩评级为:S')

这段代码是从低到高排列的   我试了一下都是可以正常执行的?
再详细的分析一下,还没有董
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 20:15
goule=6
while  goule>0:
    core=int(input('请输 ...


关于“从低到高判断也能正常执行”的详细分析

鱼油你好!你提到的代码虽然是从低到高判断的,但“看起来能正常执行”,这是因为你测试的分数恰好没有触发逻辑错误。但实际上,这种写法存在潜在的逻辑问题,我们来详细分析一下。

你写的代码逻辑如下:
goule = 6
while goule > 0:
    core = int(input('请输入你的分数:'))
    if core >= 60:
        print('您的成绩评级为:C')
    elif 90 > core >= 80:
        print('您的成绩评级为:B')
    elif 100 > core >= 90:
        print('您的成绩评级为:A')
    elif core == 100:
        print('您的成绩评级为:S')
    goule = goule - 1

问题分析:

  • 第一个 if core >= 60: 这个条件会拦截所有大于等于 60 的分数,包括 80、90、100。
  • 所以当你输入 95 时,程序会直接输出 C,后面的 B、A、S 都不会执行。
  • 你可能测试了 59、85、100 这些分数,刚好没有暴露问题。


为什么要从高到低判断?

因为 Python 的 if-elif-else 结构是“只要第一个条件成立,后面的就不再判断”。所以:
if core >= 60:  # 95 >= 60 成立,输出 C
elif core >= 80:  # 永远不会执行
elif core >= 90:  # 永远不会执行

所以正确的写法应该是:
if core == 100:
    print('您的成绩评级为:S')
elif core >= 90:
    print('您的成绩评级为:A')
elif core >= 80:
    print('您的成绩评级为:B')
elif core >= 60:
    print('您的成绩评级为:C')
else:
    print('您的成绩评级为:D')

总结:

  • 从高到低判断是为了让更高等级的条件优先被判断;
  • 从低到高虽然语法上没错,但逻辑上会导致“高分被低等级拦截”的问题;
  • 你测试时没发现问题,是因为测试数据刚好没触发错误;
  • 建议以后写判断语句时,优先考虑“最特殊、最严格”的条件放在前面。


如果你还想进一步理解,我可以帮你画出流程图或者举更多例子哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
如何才会触发问题所在?我想尝试一下,
如果能够发出流程图并举例是最完美不过来!!!

经常会看到core_input这样带有下划线的代码,没有理解这种代码的使用场景和代表的意义,请解释一下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
骆驼在西部 发表于 2025-03-31 20:30
如何才会触发问题所在?我想尝试一下,
如果能够发出 ...


一、如何触发“判断顺序错误”的问题?

你之前的代码中,判断顺序是从低到高的:
if core >= 60:
    print('C')
elif 90 > core >= 80:
    print('B')
elif 100 > core >= 90:
    print('A')
elif core == 100:
    print('S')

问题就在于:只要 core >= 60 成立,程序就不会再往下判断了!

举个例子:

  • 输入 95,你本来希望输出 A;
  • 但程序在第一句 if core >= 60 就成立了,于是直接输出 C;
  • 后面的 B、A、S 都不会执行!


所以只要你输入 80、90、95、100 这些高分,就会触发这个逻辑错误。

二、正确的判断顺序流程图

以下是一个从高到低判断的流程图(文字版):
输入分数 →
    是否等于100?→ 是 → 输出 S
                    ↓ 否
    是否大于等于90?→ 是 → 输出 A
                        ↓ 否
    是否大于等于80?→ 是 → 输出 B
                        ↓ 否
    是否大于等于60?→ 是 → 输出 C
                        ↓ 否
                    输出 D

这样写的好处是:每个分数都能被正确分类,不会被“提前拦截”。

三、关于变量名 core_input 的解释

core_input 是一个变量名,Python 中变量名可以用下划线连接多个单词,这种风格叫做 snake_case(蛇形命名法)

使用场景:

  • 当变量名由多个单词组成时,用下划线分隔更清晰;
  • 例如 core_input 表示“分数的输入值”,
  • user_name 表示“用户名”,
  • total_score 表示“总分”。


总结:下划线是为了让变量名更有“语义”,更容易读懂。

如果你还想看图形化流程图,我可以用文字模拟更详细的结构,或者你也可以用流程图工具(如 draw.io)画出来试试哦!

还想继续深入了解?我随时在~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
还和人机玩上了…

最后一个不用判断啊,else代码块就是输出“输入错误”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
习.py =
请输入你的分数:50
您的成绩评级为:D
请输入你的分数:70
您的成绩评级为:C
请输入你的分数:85
您的成绩评级为:B
请输入你的分数:95
您的成绩评级为:A
请输入你的分数:100
您的成绩评级为:S
请输入你的分数:100
您的成绩评级为:S

这是代码的执行结果,我实在没有想明白触发条件终止执行的问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
player-none 发表于 2025-3-31 20:45
还和人机玩上了…

最后一个不用判断啊,else代码块就是输出“输入错误”

我还没有发现原来是人机啊!
我说回答的这么快,不过能解决问题就好!本来就不懂,多问总能找到答案,

但是我那段代码是可以正常执行的,实在没有明白所说的特定条件会被终止执行的问题是什么样子的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-3 22:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表