求助[img]https://imgse.com/i/pCL93Sx[/img]
本帖最后由 张海琦 于 2023-7-23 18:21 编辑运行到一半卡住了,这是为什么?求各位大佬,图片链接在标题里
"""我们一起来玩一个小游戏吧"""
temp = input("今天是班花的生日,她在家举办了一场生日宴会,你喜欢她很久了,打算在今天向她告白")
temp = input("可是你没有合适的衣服,你决定:a.直接去 b.买衣服:")
guess = int(temp)
if guess == a:
print("你穿着一身寒酸的衣服去了班花的生日宴会,看着在场的人,你内心的自卑被唤起了。你没有选择表白,而是默默离开了。")
else:
print("看着钱包里的余额,你咬咬牙,还是决定去商场里买几身新衣服")
print("逛了半天,你买到了几身像样的衣服,虽然没钱吃饭了,但一想到班花,你心里就觉得值得")
print("到了晚上,你在大家的起哄声中向她告白")
print("班花生气极了:“就你这个样子还想和我在一起,真是癞蛤蟆想吃天鹅肉,没门!”你羞愤地夺门而出")
print("你还是单身")
问题描述:
这段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:
# 其他代码...
通过上述修改,您应该能够正确地选择买衣服或直接前往。希望能帮到您!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
这段代码有几个问题:
没有在每行命令后添加冒号(:),以标记代码块的开始。
"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("你还是单身") 本帖最后由 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”的,便抛出了错误。
把
guess = int(temp)
去掉,然后把
if guess == a:
改成
if temp == "a":
页:
[1]