鱼C论坛

 找回密码
 立即注册
查看: 1152|回复: 5

求助[img]https://imgse.com/i/pCL93Sx[/img]

[复制链接]
发表于 2023-7-23 18:18:44 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 张海琦 于 2023-7-23 18:21 编辑

运行到一半卡住了,这是为什么?求各位大佬,图片链接在标题里


"""我们一起来玩一个小游戏吧"""

temp = input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
temp = input("可是你没有合适的衣服,你决定:a.直接去 b.买衣服:")
guess = int(temp)

if guess == a:
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    print("看着钱包里的余额,你咬咬牙,还是决定去商场里买几身新衣服")
    print("逛了半天,你买到了几身像样的衣服,虽然没钱吃饭了,但一想到班花,你心里就觉得值得")
    print("到了晚上,你在大家的起哄声中向她告白")
    print("班花生气极了:“就你这个样子还想和我在一起,真是癞蛤蟆想吃天鹅肉,没门!”你羞愤地夺门而出")
         
print("你还是单身")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-23 18:38:37 | 显示全部楼层
问题描述:
这段Python代码在运行到一半的时候无法进行选择买衣服还是直接去,请问是怎么回事?
"""我们一起来玩一个小游戏吧"""

temp = input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
temp = input("可是你没有合适的衣服,你决定:a.直接去 b.买衣服:")

guess = int(temp)

if guess == a:
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    print("看着钱包里的余额,你咬咬牙,还是决定去商场里买几身新衣服")
    print("逛了半天,你买到了几身像样的衣服,虽然没钱吃饭了,但一想到班花,你心里就觉得值得")
    print("到了晚上,你在大家的起哄声中向她告白")
    print("班花生气极了:“就你这个样子还想和我在一起,真是癞蛤蟆想吃天鹅肉,没门!”你羞愤地夺门而出")

print("你还是单身")

解决方法:
在这段代码中,有一处错误导致了无法选择买衣服还是直接去。问题出现在以下代码片段:
guess = int(temp)

if guess == a:
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    # 其他代码...

原因是您将选项作为字符串进行输入,但在比较时,使用了变量 a 而不是字符串 "a"。因此,代码应该进行如下修改:
guess = temp

if guess == "a":
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    # 其他代码...

通过上述修改,您应该能够正确地选择买衣服或直接前往。希望能帮到您!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-23 19:55:36 | 显示全部楼层
这段代码有几个问题:

没有在每行命令后添加冒号(:),以标记代码块的开始。

"guess=int(temp)"这个转换是不必要的。因为你的temp输入其实是一个字符a或者b,而不是数字,无法用int类型接收,需改为字符串类型。

"if guess == a:" 一个是变量,一个是字符串,需要加上引号,否则a没有定义就会报错。

if 和 else 的结构不对,else后应该直接跟代码块。

正确的代码应该如下:
temp = input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
temp = input("可是你没有合适的衣服,你决定:a.直接去 b.买衣服:")
guess = temp
if guess == "a":
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    print("看着钱包里的余额,你咬咬牙,还是决定去商场里买几身新衣服")
    print("逛了半天,你买到了几身像样的衣服,虽然没钱吃饭了,但一想到班花,你心里就觉得值得")
    print("到了晚上,你在大家的起哄声中向她告白")
    print("班花生气极了:“就你这个样子还想和我在一起,真是癞蛤蟆想吃天鹅肉,没门!”你羞愤地夺门而出")
print("你还是单身")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-23 20:55:30 | 显示全部楼层
本帖最后由 hellomyprogram 于 2023-7-23 21:14 编辑

首先,我要说明,你在temp出现的第一次并没有为其规定用法,这时候可以不将temp赋值:
input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
其次,你可能没有弄清楚int的用法。
为此,你有两种选择,一种是使用字符串进行比较,这时候不需要使用int函数,但是需要在“a”前后加上双引号(或者单引号):
input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
guess = input("可是你没有合适的衣服,你决定:a.直接去 b.买衣服:")

if guess == "a":
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    print("看着钱包里的余额,你咬咬牙,还是决定去商场里买几身新衣服")
    print("逛了半天,你买到了几身像样的衣服,虽然没钱吃饭了,但一想到班花,你心里就觉得值得")
    print("到了晚上,你在大家的起哄声中向她告白")
    print("班花生气极了:“就你这个样子还想和我在一起,真是癞蛤蟆想吃天鹅肉,没门!”你羞愤地夺门而出")
         
print("你还是单身")
还有一种做法,即使用16进制进行输入,这时候你需要在int函数后面加入进制参数,还需要将“a”转换为“0xa”(16进制整数),即:
input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
temp = input("可是你没有合适的衣服,你决定:a.直接去 b.买衣服:")
guess = int(temp, 16)

if guess == 0xa:
    print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
    print("看着钱包里的余额,你咬咬牙,还是决定去商场里买几身新衣服")
    print("逛了半天,你买到了几身像样的衣服,虽然没钱吃饭了,但一想到班花,你心里就觉得值得")
    print("到了晚上,你在大家的起哄声中向她告白")
    print("班花生气极了:“就你这个样子还想和我在一起,真是癞蛤蟆想吃天鹅肉,没门!”你羞愤地夺门而出")
         
print("你还是单身")
我建议使用第一种,因为第二种限制了用户必须输入从“0”到“9”及“a”到“f”的数字,如果用户输入了这些数字之外的,那么程序依然会报错,原因和下面第一个解释器报错的原因一样。
而且,在要求用户输入的情况下,你要尽力想象用户可能会输入的奇怪数值,例如在这里你要求输入“a”或“b”,但是用户可能会输入“x”或“y”,甚至会把选项复制进去,你需要完善你的比较操作,将“else”语句转化为“elif”语句是更好的。


解释器报错的原因我将在下面解释:
  • 解释器发现input返回了“a”(字符串),便将“temp”赋值为“a”(字符串)。
  • 接下来解释器运行到了guess = int(temp)语句,将“a”作为int的参数传入,int发现“a”不是一个整数,便抛出了错误。

如果你输入了整数,解释器仍然会报错:
  • 解释器运行到了if guess == a:这一步,发现“a”并不是一个整数、小数,也不是字符串或其他类型的常量数据,便将其看作变量处理。
  • 解释器寻找了你定义过的变量,没有发现名叫“a”的,便抛出了错误。

点评

真人回答,比gpt的好多了  发表于 2023-7-23 22:32

评分

参与人数 2荣誉 +2 鱼币 +2 贡献 +3 收起 理由
zsy0226 + 2 + 2 gpt看腻的我看到了真人回答
歌者文明清理员 + 3 真人回答,比gpt的好多了

查看全部评分

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

使用道具 举报

发表于 2023-7-24 08:54:25 | 显示全部楼层
guess = int(temp)
去掉,然后把
if guess == a:
改成
if temp == "a":
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-6 09:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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