鱼C论坛

 找回密码
 立即注册
查看: 1872|回复: 10

[已解决]python基础--我原以为自己坚持专研一下就解决的,没想到还是要拜托大佬们了

[复制链接]
发表于 2020-11-10 20:18:31 | 显示全部楼层 |阅读模式

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

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

x
这是python自学视频上的题目

随机生成一个数,再输入一个数,两数作比较,
输入的数大,提示你猜得数字大了
输入的数小,提示你猜的数字小了
只有三次输入机会
我到底哪里错了,怎么运行后可以无限次输入,没有限制,只要输错就可以一直输入下去,,,脑壳要炸了

import random
secret = random.randint(1,10)  #随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0  #输入次数限制使用
if guess == secret:     #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret or cs == 3:      #第一次输入不正确,进入循环
        print("输入的不对哦,再输入一次")
        temp = input("不妨猜一下我现在心里在想的是哪个数字:")
        guess = int(temp)
        cs = cs + 1  # 次数的递增
        if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
        elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")
            continue
        elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")
            continue

print("游戏结束!!!")


最佳答案
2020-11-10 20:26:04
[b]

你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足那么久返回 True ,则循环只要你不输入正确,就会无限循环下去,且此时短路了 or 右边的条件

还有这里可以小小改进下:elif 里面的 continue 可以去掉,是多余的,因为执行完命令时候已经就完成循环了,会直接开始下个循环,可以不用 continue

参考代码:
import random
secret = random.randint(1,10)  #随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0  #输入次数限制使用
if guess == secret:     #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret and cs < 3:      #第一次输入不正确,进入循环
        print("输入的不对哦,再输入一次")
        temp = input("不妨猜一下我现在心里在想的是哪个数字:")
        guess = int(temp)
        cs = cs + 1  # 次数的递增
        if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
        elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")

        elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")

print("游戏结束!!!")
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-10 20:24:28 | 显示全部楼层
secret = random.randint(1,10)  #随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0  #输入次数限制使用
if guess == secret:     #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret and cs < 3:      #第一次输入不正确,进入循环                    这里改了就好了
        print("输入的不对哦,再输入一次")
        temp = input("不妨猜一下我现在心里在想的是哪个数字:")
        guess = int(temp)
        cs = cs + 1  # 次数的递增
        if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
        elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")
            continue
        elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")
            continue

print("游戏结束!!!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 20:24:58 | 显示全部楼层
第十行改动一下就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 20:26:04 | 显示全部楼层    本楼为最佳答案   
[b]

你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足那么久返回 True ,则循环只要你不输入正确,就会无限循环下去,且此时短路了 or 右边的条件

还有这里可以小小改进下:elif 里面的 continue 可以去掉,是多余的,因为执行完命令时候已经就完成循环了,会直接开始下个循环,可以不用 continue

参考代码:
import random
secret = random.randint(1,10)  #随机生成一个数
print("............我爱python................")
temp = input("不妨猜一下我现在心里在想的是哪个数字:")
guess = int(temp)
cs = 0  #输入次数限制使用
if guess == secret:     #第一次输入正确的数,直接结束
    print("卧槽,你这么屌的吗,一次就对了")
    print("狠狠哈哈")
else:
    while guess != secret and cs < 3:      #第一次输入不正确,进入循环
        print("输入的不对哦,再输入一次")
        temp = input("不妨猜一下我现在心里在想的是哪个数字:")
        guess = int(temp)
        cs = cs + 1  # 次数的递增
        if guess == secret: #输入的与随机的作比较
            print("哎哟不错哟,竟然被你猜对了")
            print("狠狠哈哈")
            break
        elif guess - secret < 0:    #输入的与随机的作比较
            print("你猜的数字小了")

        elif guess - secret > 0:    #输入的与随机的作比较
            print("你猜得数字大了")

print("游戏结束!!!")
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 20:27:36 | 显示全部楼层
Twilight6 发表于 2020-11-10 20:26
你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足 ...

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

使用道具 举报

 楼主| 发表于 2020-11-10 20:28:15 | 显示全部楼层
Twilight6 发表于 2020-11-10 20:26
你 while 循环的条件用错了 ,应该用 and cs < 3 而不是 or cs == 3

因为 or 是只要你一个条件满足 ...

好的,谢谢大佬的讲解,我马上去改一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-10 20:32:53 | 显示全部楼层

嗯嗯,谢谢大佬,我改了以后果然好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 20:38:59 | 显示全部楼层
马宝国异界纵横 发表于 2020-11-10 20:32
嗯嗯,谢谢大佬,我改了以后果然好了

解决了可以给设个【最佳答案】吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-10 20:54:41 | 显示全部楼层
昨非 发表于 2020-11-10 20:38
解决了可以给设个【最佳答案】吗

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

使用道具 举报

 楼主| 发表于 2020-11-10 20:55:45 | 显示全部楼层
昨非 发表于 2020-11-10 20:38
解决了可以给设个【最佳答案】吗

嘶,好像楼数设错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 21:04:33 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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