鱼C论坛

 找回密码
 立即注册
查看: 459|回复: 10

[已解决]python中数据类型问题

[复制链接]
发表于 2024-1-29 09:28:07 | 显示全部楼层 |阅读模式

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

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

x
有家电影院根据观众的年龄收取不同的票价:不到 3 岁的观众免费;3(含)~12 岁的观众收费 10 美元;年满12 岁的观众收费 15 美元。请编写一个循环,在其中询问用户的年龄,并指出其票价。
在 while 循环中使用条件测试来结束循环。



我的代码是这样的:

  1. esc = ""
  2. while esc != "quit":
  3.     print("输入quit退出循环")
  4.     age = input("输入你的年龄:")
  5.     if int(age) < 3:
  6.         print("免费")
  7.     elif int(age) < 12:
  8.         print("10美元")
  9.     elif int(age) >= 12:
  10.         print("15美元")
复制代码


输入数字都是正确的,然后输入quit后就报错了。


Traceback (most recent call last):
  File "E:\python\pythonProject\书本练习.py", line 5, in <module>
    if int(age) < 3:
       ^^^^^^^^
ValueError: invalid literal for int() with base 10: 'quit'


最佳答案
2024-1-29 09:54:23


既然你用quit做退出,那如果输入quit以后,你要对输入内容做判断,看是不是quit,如果是quit,就要break跳出循环啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-29 09:28:32 | 显示全部楼层
这个错误是因为你在输入"quit"时,程序试图将其转换为整数,但"quit"并不是一个有效的整数。为了解决这个问题,你可以在进入循环之前添加一个条件判断来检查用户输入是否为"quit",如果是的话,就结束循环。代码示例如下:

  1. while True:
  2.     esc = input("输入quit退出循环:")
  3.     if esc == "quit":
  4.         break
  5.     age = int(input("输入你的年龄:"))
  6.     if age < 3:
  7.         print("免费")
  8.     elif age < 12:
  9.         print("10美元")
  10.     else:
  11.         print("15美元")
复制代码


这样,当你输入"quit"时,程序会结束循环,而不会再去尝试将其转换为整数。同时,我还对你的代码进行了一些修改,使其更加简洁和易读。希望能对你有所帮助!

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

使用道具 举报

 楼主| 发表于 2024-1-29 09:37:17 | 显示全部楼层
FishC 发表于 2024-1-29 09:28
这个错误是因为你在输入"quit"时,程序试图将其转换为整数,但"quit"并不是一个有效的整数。为了解决这个问 ...

你这个代码进入while循环里面还得判断一下esc的输入,用起来很麻烦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-29 09:37:47 | 显示全部楼层
python小小白哟 发表于 2024-01-29 09:37
你这个代码进入while循环里面还得判断一下esc的输入, ...


抱歉给你带来了麻烦,你可以使用一个更简洁的代码来达到同样的效果。通过将判断退出循环的条件放在循环的开头,可以避免在每次循环迭代时都去检查退出条件。这样,只要用户输入的不是"quit",循环就会一直进行下去。以下是修改后的代码:

  1. age = ""
  2. while age != "quit":
  3.     print("输入quit退出循环")
  4.     age = input("输入你的年龄:")
  5.     if age.isdigit():
  6.         age = int(age)
  7.         if age < 3:
  8.             print("免费")
  9.         elif age < 12:
  10.             print("10美元")
  11.         else:
  12.             print("15美元")
  13.     elif age != "quit":
  14.         print("请输入正确的年龄(或输入quit退出)")
复制代码


在这个版本中,我们首先将 `age` 定义为空字符串,然后进入循环。在每次循环迭代时,我们会首先判断用户输入是否为 "quit",如果是的话,就结束循环。如果不是 "quit",则继续执行后续的代码。我们使用 `isdigit()` 方法来检查用户输入是否为数字。如果是数字,我们将其转换为整数,并按照之前的票价逻辑进行判断和输出。如果不是数字,则提示用户输入正确的年龄。这样,只有当用户输入 "quit" 时,循环才会结束。

希望这个修改后的代码能更符合你的需求!

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

使用道具 举报

 楼主| 发表于 2024-1-29 09:50:22 | 显示全部楼层
来个正常人吧 都是AI回答的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-29 09:50:51 | 显示全部楼层
python小小白哟 发表于 2024-01-29 09:50
来个正常人吧 都是AI回答的


好的,如果你觉得上面的回答不满意,我再来给你一个解决这个问题的简单代码。这次我们不用`while`循环,而是用`for`循环来处理每一个观众的年龄,代码如下:

  1. ages = []
  2. while True:
  3.     age = input("请输入观众的年龄(输入quit退出输入):")
  4.     if age == "quit":
  5.         break
  6.     ages.append(int(age))

  7. for age in ages:
  8.     if age < 3:
  9.         print("免费")
  10.     elif age < 12:
  11.         print("10美元")
  12.     else:
  13.         print("15美元")
复制代码


这个代码中,我们首先使用一个`while`循环来让用户输入观众的年龄,直到用户输入"quit"为止。将每一个年龄转换为整数后,我们将它们存储在一个列表`ages`中。

接下来,我们使用`for`循环遍历`ages`列表中的每一个年龄,并根据年龄来判断票价并输出相应的信息。

这个代码简单明了,不需要对退出循环进行额外的判断。希望这个版本能满足你的需求!如果还有其他问题,欢迎继续提问。

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

使用道具 举报

发表于 2024-1-29 09:54:23 | 显示全部楼层    本楼为最佳答案   


既然你用quit做退出,那如果输入quit以后,你要对输入内容做判断,看是不是quit,如果是quit,就要break跳出循环啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-29 09:58:30 | 显示全部楼层
本帖最后由 a36804070 于 2024-1-29 10:01 编辑
  1. while True:
  2.     print("输入quit退出循环")
  3.     age = input("输入你的年龄:")
  4.     if age == 'quit':
  5.         break
  6.     else:
  7.         if int(age) < 3:
  8.             print("免费")
  9.         elif 3<= int(age) < 12:
  10.             print("10美元")
  11.         elif int(age) >= 12:
  12.             print("15美元")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-29 10:01:19 | 显示全部楼层
a36804070 发表于 2024-1-29 09:54
既然你用quit做退出,那如果输入quit以后,你要对输入内容做判断,看是不是quit,如果是quit,就要brea ...

好的  感谢  问题已经解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-29 10:03:17 | 显示全部楼层

修改后的代码如下:

  1. age = ""
  2. while age != "quit":
  3.     print("输入quit退出循环")
  4.     age = input("输入你的年龄:")
  5.     if age == "quit":
  6.         break
  7.     elif int(age) < 3:
  8.         print("免费")
  9.     elif int(age) < 12:
  10.         print("10美元")
  11.     elif int(age) >= 12:
  12.         print("15美元")
复制代码



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

使用道具 举报

发表于 2024-1-29 10:19:52 | 显示全部楼层
本帖最后由 a36804070 于 2024-1-29 10:23 编辑


你的3-12岁的判断还是要改为3<=age<12才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 01:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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