课后作业有疑惑
完善小游戏,为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环问题是:
1)代码正常运行,但是当输入数字8时,没有打印出对应的提示,直接提示游戏结束
2)只有3次机会,但是实际输入四次数字才停止
代码如下:
temp = input("请输入一个数字:")
guess = int(temp)
i = 3
while guess != 8 and i > 0:
temp = input("猜错了,请重新输入:")
guess = int(temp)
i = i - 1
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
else:
if guess > 8:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
print("游戏结束,不玩啦~")
请大佬们帮忙解惑,感谢{:5_109:} 本帖最后由 Twilight6 于 2020-7-20 13:55 编辑
因为你有一次 input 是在 while 循环外输入的,改成这样就好了:
guess = 0
i = 3
print("请输入一个数字:",end='')# print 默认参数end ='\n' 换行符号 我们用end="" 覆盖他的默认值 就不会换行
while guess != 8 and i > 0:
temp = input()
guess = int(temp)
i = i - 1
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
else:
if guess > 8:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
if i != 0:
print("猜错了,请重新输入:", end='') # print 默认参数end ='\n' 换行符号 我们用end="" 覆盖他的默认值 就不会换行
print("游戏结束,不玩啦~") 这样试试:
temp = input("请输入一个数字:")
guess = int(temp)
i = 2
while guess != 8 and i > 0:
temp = input("猜错了,请重新输入:")
guess = int(temp)
i = i - 1
if guess != 8:
if guess > 8:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
print("游戏结束,不玩啦~") zltzlt 发表于 2020-7-20 13:54
这样试试:
最后那个if..没有else吗?不是说if...和else要搭配一起吗 Twilight6 发表于 2020-7-20 13:54
因为你有一次 input 是在 while 循环外输入的,改成这样就好了:
这个和提供的参考答案很像,参考答案中还插入了随机数的用法,而且定义的guess = 0是为什么呢? 勤奋的火柴头 发表于 2020-7-20 14:00
这个和提供的参考答案很像,参考答案中还插入了随机数的用法,而且定义的guess = 0是为什么呢?
guess = 0 是为了初始化,因为如果你没有定义这个 guess 的时候,代码运行到 while 循环时就会报错
因为 guess 是 while 的判断条件,而你的 guess 还没定义就不知道是什么东西,所以导致的报错 勤奋的火柴头 发表于 2020-7-20 13:58
最后那个if..没有else吗?不是说if...和else要搭配一起吗
if 不一定要跟 else 搭配在一起,单独一个 if 也行,但不能单独一个 else 。 前面你已经输入过一次,所以要把那次去掉:
temp = input("请输入一个数字:")
guess = int(temp)
i = 2
while guess != 8 and i > 0:
temp = input("猜错了,请重新输入:")
guess = int(temp)
i = i - 1
if guess != 8:
if guess > 8:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
print("游戏结束,不玩啦~") zltzlt 发表于 2020-7-20 14:03
if 不一定要跟 else 搭配在一起,单独一个 if 也行,但不能单独一个 else 。
那我换成这样写Ok吗?在if里插入一个while?
temp = input("请输入一个数字:")
guess = int(temp)
i = 2
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
else:
while guess != 8 and i > 0:
temp = input("猜错了,请重新输入:")
guess = int(temp)
i = i - 1
if guess > 8:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
print("游戏结束,不玩啦~")
勤奋的火柴头 发表于 2020-7-20 14:08
那我换成这样写Ok吗?在if里插入一个while?
也可以,不过第 2、3 次猜中会直接打印 "游戏结束,不玩啦~",这样写就可以了:
temp = input("请输入一个数字:")
guess = int(temp)
i = 2
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
else:
while guess != 8 and i > 0:
temp = input("猜错了,请重新输入:")
guess = int(temp)
i = i - 1
if guess == 8:
print("我晕,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没有奖励")
elif guess > 8:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
print("游戏结束,不玩啦~") zltzlt 发表于 2020-7-20 14:14
也可以,不过第 2、3 次猜中会直接打印 "游戏结束,不玩啦~",这样写就可以了:
对哈,没有考虑到,不过如果这样改的话感觉代码更多了,还是你那个更好,感谢 Twilight6 发表于 2020-7-20 14:02
guess = 0 是为了初始化,因为如果你没有定义这个 guess 的时候,代码运行到 while 循环时就会报错
...
定义明白了,后面的还需要再想想,感谢
页:
[1]