鱼C论坛

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

[已解决]为什么这个地方输入2会报异常?

[复制链接]
发表于 2020-6-6 20:28:13 | 显示全部楼层 |阅读模式

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

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

x
abc = "\nWe will set the ticket price according to different ages. Please enter your age: "
while True:
    message = input(abc)
    if 0 <= int(message) < 3:
        print("\nWe will charge the fare: " + str(0) + "doller.")
    if 3 <= int(message) <= 12:
        print("\nWe will charge the fare: " + str(10) + "doller.")
    else:
        print("\nWe will charge the fare: " + str(15) + "doller.")
最佳答案
2020-6-6 22:15:10
输入0到2会在你的代码中进行了2次判断,所以会打印2次,把第二个if改成 elif就可以了,另外while循环没有退出,可以考虑加上按q退出的语句:
abc = "\nWe will set the ticket price according to different ages. Please enter your age: "
while True:
    message = input(abc)
    if message=='q':    #<---加入退出机制
        break
    if 0 <= int(message) < 3:
        print("\nWe will charge the fare: " + str(0) + "doller.")
    elif 3 <= int(message) <= 12:                  #<---这里要改成elif才能建立完整判断逻辑
        print("\nWe will charge the fare: " + str(10) + "doller.")
    else:
        print("\nWe will charge the fare: " + str(15) + "doller.")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-6 20:35:13 | 显示全部楼层
并不会啊...
abc = "\nWe will set the ticket price according to different ages. Please enter your age: "
while True:
    message = input(abc)
    if 0 <= int(message) < 3:
        print("\nWe will charge the fare: " + str(0) + "doller.")
    if 3 <= int(message) <= 12:
        print("\nWe will charge the fare: " + str(10) + "doller.")
    else:
        print("\nWe will charge the fare: " + str(15) + "doller.")

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

使用道具 举报

发表于 2020-6-6 21:03:01 | 显示全部楼层
我这没异常。
另外你应该用:if---elif---else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-6 22:15:10 | 显示全部楼层    本楼为最佳答案   
输入0到2会在你的代码中进行了2次判断,所以会打印2次,把第二个if改成 elif就可以了,另外while循环没有退出,可以考虑加上按q退出的语句:
abc = "\nWe will set the ticket price according to different ages. Please enter your age: "
while True:
    message = input(abc)
    if message=='q':    #<---加入退出机制
        break
    if 0 <= int(message) < 3:
        print("\nWe will charge the fare: " + str(0) + "doller.")
    elif 3 <= int(message) <= 12:                  #<---这里要改成elif才能建立完整判断逻辑
        print("\nWe will charge the fare: " + str(10) + "doller.")
    else:
        print("\nWe will charge the fare: " + str(15) + "doller.")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 07:41:09 | 显示全部楼层
本帖最后由 老兵hb 于 2020-6-7 07:43 编辑

1、把第2个if改成elif
abc = "\nWe will set the ticket price according to different ages. Please enter your age: "
while True:
    message = input(abc)
    if 0 <= int(message) < 3:
        print("\nWe will charge the fare: " + str(0) + "doller.")
    elif 3 <= int(message) <= 12:
        print("\nWe will charge the fare: " + str(10) + "doller.")
    else:
        print("\nWe will charge the fare: " + str(15) + "doller.")


2、把else改成int(message)>12:

abc = "\nWe will set the ticket price according to different ages. Please enter your age: "
while True:
    message = input(abc)
    if 0 <= int(message) < 3:
        print("\nWe will charge the fare: " + str(0) + "doller.")
    if 3 <= int(message) <= 12:
        print("\nWe will charge the fare: " + str(10) + "doller.")
    if int(message)>12:
        print("\nWe will charge the fare: " + str(15) + "doller.")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 08:53:20 | 显示全部楼层
老兵hb 发表于 2020-6-7 07:41
1、把第2个if改成elif
abc = "\nWe will set the ticket price according to different ages. Please ente ...

对,我试着做过第二个,输入正常。另外,如果只有两行判断,中间不加elif,而只有if和else的话,不算不完整哈?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 08:59:08 | 显示全部楼层
suchocolate 发表于 2020-6-6 21:03
我这没异常。
另外你应该用:if---elif---else

We will set the ticket price according to different ages. Please enter your age:
2

We will charge the fare:0

We will charge the fare:15

We will set the ticket price according to different ages. Please enter your age:

#如果我输入2的话,以上是我的程序输入结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 09:00:35 | 显示全部楼层
suchocolate 发表于 2020-6-6 21:03
我这没异常。
另外你应该用:if---elif---else

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

使用道具 举报

 楼主| 发表于 2020-6-7 09:06:21 | 显示全部楼层
#您好,以下是输出结果。
We will set the ticket price according to different ages. Please enter your age:
2

We will charge the fare:0

We will charge the fare:15

We will set the ticket price according to different ages. Please enter your age:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 09:07:10 | 显示全部楼层
wswzmomoda 发表于 2020-6-7 08:59
We will set the ticket price according to different ages. Please enter your age:
2

只是结果不是你的预期,程序还是走完了,不能叫“报异常”,我还以为报错了呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 09:09:13 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-6-7 09:11:25 | 显示全部楼层
suchocolate 发表于 2020-6-7 09:07
只是结果不是你的预期,程序还是走完了,不能叫“报异常”,我还以为报错了呢。

是的,跟预期不同,我把它叫报异常,这种说法不对哈?不是报错。
另外,有人说是对象方面的问题,其实我对这个说法还有点迷惑~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 09:12:58 | 显示全部楼层
txxcat 发表于 2020-6-6 22:15
输入0到2会在你的代码中进行了2次判断,所以会打印2次,把第二个if改成 elif就可以了,另外while循环没有退 ...

加入退出机制我懂了,谢谢提醒。
另外,能不能详细说一下关于对象的问题,我知道这个最基本的概念问题,但是我确实不是很懂~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 09:25:07 | 显示全部楼层

您好,代码这部分是怎么添加的啊?链接?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 09:30:52 | 显示全部楼层
Twilight6 发表于 2020-6-7 09:11
没事  问题已经解决就设置最佳答案吧

好的,第一次来发帖,不是很懂怎么操作,请多包涵~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 09:37:29 | 显示全部楼层
wswzmomoda 发表于 2020-6-7 08:53
对,我试着做过第二个,输入正常。另外,如果只有两行判断,中间不加elif,而只有if和else的话,不算不完 ...

我的理解是代码从上往下依次执行,if if else应该就是判断了两次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 09:50:26 | 显示全部楼层
老兵hb 发表于 2020-6-7 09:37
我的理解是代码从上往下依次执行,if if else应该就是判断了两次

不是很理解,因为它的输出是0和15两个结果,但是,这样的话,条件怎么没有起作用?毕竟2是包括在0<=int(message)<3里面而不包括在其他的条件里的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 12:30:22 | 显示全部楼层
wswzmomoda 发表于 2020-6-7 09:12
加入退出机制我懂了,谢谢提醒。
另外,能不能详细说一下关于对象的问题,我知道这个最基本的概念问题, ...

对象这个比较复杂,可不是一两句话能说清楚的,从大的方面说,叫:万物皆对象;从小的方面来说,对象是类的实例化。这种理解对学习对象也没太大的帮助,你可以把小甲鱼的关于对象的视频反复多看几次,作业认真做,再加上悟性,总会学会对象编程的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 15:56:04 | 显示全部楼层
txxcat 发表于 2020-6-7 12:30
对象这个比较复杂,可不是一两句话能说清楚的,从大的方面说,叫:万物皆对象;从小的方面来说,对象是类 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 20:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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