鱼C论坛

 找回密码
 立即注册
查看: 2761|回复: 18

新手问题:如何实现条件语句的循环

[复制链接]
发表于 2016-11-10 18:17:02 | 显示全部楼层 |阅读模式

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

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

x
看了小甲鱼第8课的演示,我想自己写一个不容易报错的语句,结果失败了。
问题出在:在判断错误输入时,比如输入不在0-100之间的数字、输入字符而不是数字,程序会提示用户输入错误,但是不会返回到再次输入数字的界面。求解。
语句如下供参考:

temps=input('请输入你的分数:')
if temps.isdigit():
    temp=int(temps)
    if 90<=temp<=100:
        print('你的成绩是A')
    elif 80<=temp<90:
        print('你的成绩是B')
    elif 60<=temp<80:
        print('你的成绩是C')
    elif temp<60:
        print('你的成绩是D')
    else:
        print('抱歉,你的输入错误,请输入一个正确的分数:',end='')
else:
    print('抱歉,你的输入错误,请输入一个正确的分数:',end='')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-10 19:45:07 | 显示全部楼层
加个循环试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-10 21:17:16 | 显示全部楼层
本帖最后由 JH_Lau 于 2016-11-11 10:37 编辑
  1. temps=input('请输入你的分数:')
  2. while 1:
  3.         if temps.isdigit():
  4.                 temp=int(temps)
  5.                 if 90<=temp<=100:
  6.                         print('你的成绩是A')
  7.                         break
  8.                 elif 80<=temp<90:
  9.                         print('你的成绩是B')
  10.                         break
  11.                 elif 60<=temp<80:
  12.                         print('你的成绩是C')
  13.                         break
  14.                 elif temp<60:
  15.                         print('你的成绩是D')
  16.                         break
  17.                 else:
  18.                         temps = input('抱歉,你的输入错误,请输入一个正确的分数:')
  19.                         continue
  20.         else:
  21.                 temps = input('抱歉,你的输入错误,请输入一个正确的分数:')
  22.                 continue
复制代码

用这个试试?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-10 21:48:08 | 显示全部楼层
你说的问题后面的课程中的try好容易一些,不过我先按你的思路修改了下

  1. temp = input('请输入你的分数:')
  2. while True:   
  3.     if temp.isdigit():
  4.         temp = int(temp)
  5.         if 90 <= temp <= 100:            
  6.             print('你的成绩是A')
  7.             break
  8.         elif 80 <= temp < 90:
  9.             print('你的成绩是B')
  10.             break
  11.         elif 60<= temp <80:
  12.             print('你的成绩是C')
  13.             break
  14.         elif temp < 60 :
  15.             print('你的成绩是D')
  16.             break
  17.         else:
  18.             temp = input('抱歉,你的输入有误,请重新输入一个正确的分数:')
  19.     else:
  20.         temp = input('抱歉,你的输入有误,请重新输入一个正确的分数:')
复制代码

评分

参与人数 1鱼币 +5 收起 理由
pt2100 + 5 这个方法比较适合我这个初学者

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-10 22:17:07 | 显示全部楼层
我在给你来一段try的版本,明显要少一些判断和缩进
废话不多说上代码
  1. while True:
  2.     try:
  3.         temp = int(input('请输入你的分数:'))
  4.         if 90 <= temp <= 100:            
  5.             print('你的成绩是A')
  6.             break
  7.         elif 80 <= temp < 90:
  8.             print('你的成绩是B')
  9.             break
  10.         elif 60<= temp <80:
  11.             print('你的成绩是C')
  12.             break
  13.         elif 0<= temp < 60 :
  14.             print('你的成绩是D')
  15.             break
  16.         else:
  17.             print('抱歉,你的输入超出范围,请重新输入一个正确的分数')        
  18.     except:
  19.         print('输入有误,请重新输入')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-10 23:39:48 | 显示全部楼层

你输入1000试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 09:26:04 | 显示全部楼层
学习了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 09:34:32 | 显示全部楼层
我当时也想到这个问题,没想到楼主还是实践了,给你点赞。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 09:41:48 | 显示全部楼层
本帖最后由 小茗同学 于 2016-11-11 09:45 编辑
  1. temps=input('请输入你的分数:')
  2. while True:
  3.     if temps.isdigit():
  4.         temp=int(temps)
  5.         if 90<=temp<=100:
  6.             print('你的成绩是A')
  7.             break
  8.         elif 80<=temp<90:
  9.             print('你的成绩是B')
  10.             break
  11.         elif 60<=temp<80:
  12.             print('你的成绩是C')
  13.             break
  14.         elif temp<60:
  15.             print('你的成绩是D')
  16.             break
  17.         else:
  18.             temps=input('抱歉,你的输入错误,请输入一个正确的分数:')
  19.     else:
  20.         temps=input('抱歉,你的输入错误,请输入一个正确的分数:')
  21.         
  22. print('退出')   
  23.         
复制代码

楼主的代码不能再次输入是因为没有使用while循环,而且在条件不符合是没有给一个input使用户重新输入
希望能帮助到你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-11 09:48:37 | 显示全部楼层

谢谢你的回复,不过,确实在输入超过100的数时,程序会没有反应。楼下的方法挺不错的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-11 09:53:05 | 显示全部楼层
本帖最后由 pt2100 于 2016-11-11 09:57 编辑
jackie-L 发表于 2016-11-10 21:48
你说的问题后面的课程中的try好容易一些,不过我先按你的思路修改了下


不过我有两个问题想请教:
1.为啥要加上break?是为以后调试程序、查找错误的时候提供方便吗?
2.我看小甲鱼的第4课的课后作业里,用的是end=‘’的方法就能将程序不断的运行下去,且他只用了一个input。
如果在你这段程序最后的两句else里用end=‘’的方法,该怎么修改?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-11 10:00:50 | 显示全部楼层
healther 发表于 2016-11-11 09:34
我当时也想到这个问题,没想到楼主还是实践了,给你点赞。

因为我是初学者,啥都不理解。我觉得写代码,思路和逻辑思维很重要。所以在逐步的学习过程中会去拓展的想一些功能该如何实现,这样能加深印象,也可以锻炼自己举一反三,举三反一的思维模式。一起加油吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-11 10:07:06 | 显示全部楼层
小茗同学 发表于 2016-11-11 09:41
楼主的代码不能再次输入是因为没有使用while循环,而且在条件不符合是没有给一个input使用户重新输入
希 ...

谢谢你的解答。不过楼上一位兄弟已经跟你发了一样的代码,所以我这里就不给你鱼币了。
希望在我以后的学习中能跟你有更多的讨论、互动。谢谢。
其实我还有个问题,刚才也发出来了,就是第4课课后作业为啥用end=‘’的方法就能代替循环结尾的input。百思不得其解,估计我还得再往后学些。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 10:36:50 | 显示全部楼层

嗯,确实少了两句。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 13:36:27 | 显示全部楼层
换一种写法:
  1. score = ['D', 'D', 'D', 'D', 'D', 'D', 'C', 'C', 'B', 'A', 'A']
  2. while True:
  3.     temp = input('请输入你的分数:')
  4.     if not temp.isdigit() or int(temp) > 100:
  5.         print('输入有误,不能是非数字,分数要在0~100之间', end = '')
  6.     else:
  7.         temp = int(temp)
  8.         print(('你的成绩是%s'%score[temp // 10]))
  9.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 14:00:21 | 显示全部楼层
pt2100 发表于 2016-11-11 10:07
谢谢你的解答。不过楼上一位兄弟已经跟你发了一样的代码,所以我这里就不给你鱼币了。
希望在我以后的学 ...

嘿嘿,那个鱼币就无所谓,其实昨天看到这个问题一直到下班就没想到,今早上班才突然明白的,重要的是你明白了,以后大家互相进步
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 17:53:08 | 显示全部楼层
pt2100 发表于 2016-11-11 10:00
因为我是初学者,啥都不理解。我觉得写代码,思路和逻辑思维很重要。所以在逐步的学习过程中会去拓展的想 ...

你这样的态度非常赞。

可惜我时间比较少,打算先把视频浏览完了再通过例子去实践,没有你稳扎稳打的感觉。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-12 21:50:51 | 显示全部楼层

谢谢版主的解答,这个是用新手之前学过的内容写的代码,很给力,让我一看就能明白它的逻辑结构。多谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-12 22:31:48 | 显示全部楼层
楼主方法确实不错,少了很多判断
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 20:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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