本帖最后由 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”的,便抛出了错误。
|