wswzmomoda 发表于 2020-6-6 20:28:13

为什么这个地方输入2会报异常?

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.")

Twilight6 发表于 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.")

suchocolate 发表于 2020-6-6 21:03:01

我这没异常。
另外你应该用:if---elif---else

txxcat 发表于 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.")

老兵hb 发表于 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.")

wswzmomoda 发表于 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的话,不算不完整哈?

wswzmomoda 发表于 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的话,以上是我的程序输入结果。

wswzmomoda 发表于 2020-6-7 09:00:35

suchocolate 发表于 2020-6-6 21:03
我这没异常。
另外你应该用:if---elif---else

好的,谢谢您

wswzmomoda 发表于 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:

suchocolate 发表于 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



只是结果不是你的预期,程序还是走完了,不能叫“报异常”,我还以为报错了呢。

wswzmomoda 发表于 2020-6-7 09:09:13

Twilight6 发表于 2020-6-6 20:35
并不会啊...

谢谢您

wswzmomoda 发表于 2020-6-7 09:11:25

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

是的,跟预期不同,我把它叫报异常,这种说法不对哈?不是报错。
另外,有人说是对象方面的问题,其实我对这个说法还有点迷惑~~~

wswzmomoda 发表于 2020-6-7 09:12:58

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

加入退出机制我懂了,谢谢提醒。
另外,能不能详细说一下关于对象的问题,我知道这个最基本的概念问题,但是我确实不是很懂~~~

wswzmomoda 发表于 2020-6-7 09:25:07

Twilight6 发表于 2020-6-6 20:35
并不会啊...

您好,代码这部分是怎么添加的啊?链接?

wswzmomoda 发表于 2020-6-7 09:30:52

Twilight6 发表于 2020-6-7 09:11
没事问题已经解决就设置最佳答案吧

好的,第一次来发帖,不是很懂怎么操作,请多包涵~

老兵hb 发表于 2020-6-7 09:37:29

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

我的理解是代码从上往下依次执行,if if else应该就是判断了两次

wswzmomoda 发表于 2020-6-7 09:50:26

老兵hb 发表于 2020-6-7 09:37
我的理解是代码从上往下依次执行,if if else应该就是判断了两次

不是很理解,因为它的输出是0和15两个结果,但是,这样的话,条件怎么没有起作用?毕竟2是包括在0<=int(message)<3里面而不包括在其他的条件里的。

txxcat 发表于 2020-6-7 12:30:22

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

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

wswz2020 发表于 2020-6-7 15:56:04

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

好的,我试试。
页: [1]
查看完整版本: 为什么这个地方输入2会报异常?