鱼C论坛

 找回密码
 立即注册
查看: 1314|回复: 11

[已解决]课后作业有疑惑

[复制链接]
发表于 2020-7-20 13:51:17 | 显示全部楼层 |阅读模式

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

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

x
完善小游戏,为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环
问题是:
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("游戏结束,不玩啦~")

请大佬们帮忙解惑,感谢
最佳答案
2020-7-20 13:54:52
这样试试:
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("游戏结束,不玩啦~")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-20 13:54:31 | 显示全部楼层
本帖最后由 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("游戏结束,不玩啦~")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 13:54:52 | 显示全部楼层    本楼为最佳答案   
这样试试:
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("游戏结束,不玩啦~")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 13:58:45 | 显示全部楼层

最后那个if..没有else吗?不是说if...和else要搭配一起吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:00:51 | 显示全部楼层
Twilight6 发表于 2020-7-20 13:54
因为你有一次 input 是在 while 循环外输入的,改成这样就好了:

这个和提供的参考答案很像,参考答案中还插入了随机数的用法,而且定义的guess = 0是为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:02:15 | 显示全部楼层
勤奋的火柴头 发表于 2020-7-20 14:00
这个和提供的参考答案很像,参考答案中还插入了随机数的用法,而且定义的guess = 0是为什么呢?



guess = 0 是为了初始化,因为如果你没有定义这个 guess 的时候,代码运行到 while 循环时就会报错

因为 guess 是 while 的判断条件,而你的 guess 还没定义就不知道是什么东西,所以导致的报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:03:18 | 显示全部楼层
勤奋的火柴头 发表于 2020-7-20 13:58
最后那个if..没有else吗?不是说if...和else要搭配一起吗

if 不一定要跟 else 搭配在一起,单独一个 if 也行,但不能单独一个 else 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:07:53 | 显示全部楼层
前面你已经输入过一次,所以要把那次去掉:
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("游戏结束,不玩啦~")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:08:33 | 显示全部楼层
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("游戏结束,不玩啦~")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:14:58 | 显示全部楼层
勤奋的火柴头 发表于 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("游戏结束,不玩啦~")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:18:02 | 显示全部楼层
zltzlt 发表于 2020-7-20 14:14
也可以,不过第 2、3 次猜中会直接打印 "游戏结束,不玩啦~",这样写就可以了:

对哈,没有考虑到,不过如果这样改的话感觉代码更多了,还是你那个更好,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:20:03 | 显示全部楼层
Twilight6 发表于 2020-7-20 14:02
guess = 0 是为了初始化,因为如果你没有定义这个 guess 的时候,代码运行到 while 循环时就会报错
...

定义明白了,后面的还需要再想想,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 23:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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