鱼C论坛

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

[已解决]elif 的一个条件不会执行

[复制链接]
发表于 2021-2-23 12:54:23 | 显示全部楼层 |阅读模式

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

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

x
print('欢迎来到\'猜一猜\'小游戏\n')
import random
secret = random.randint(1,10)
times = 0
guess = int(input('你能猜到我心里面所想的数字吗?\n(只有三次机会):'))
while guess != secret and times < 3:
    times += 1
    if guess < secret and:
        print('猜错了,小了')
    elif guess > secret:
        print('猜错了,大了')
    elif times == 1:
        print('机会用完了,就这样吧.')

    guess = int(input('猜错了哦,再猜猜看吧:'))
if guess == secret:
    print('这么厉害,这你都知道.\n没意思,不玩了.')

红色字体的elif语句不会执行,有点懵,,
最佳答案
2021-2-23 14:39:01
"""用Python设置第一个游戏"""
import random
answer = random.randint(1, 10)

counts = 3
print("你一共有{}次机会哦!".format(counts))
print("答案在1到10之间!")

while counts > 0:
    print("-----------------------------------------")
    temp = input("不妨猜一下我现在心里想的是哪个数字:")
    guess = int(temp)
     
    if guess == answer:
        print("你是我心里的蛔虫吗?!")
        print("哼!猜中了也没奖励!")
        break

    elif guess < answer:
        print("猜小了")
        print('你还剩{}次机会哦!'.format(counts - 1)) 
    else:
        if guess > answer:
            print("猜大了")
            print('你还剩{}次机会哦!'.format(counts - 1))

    counts -= 1


print("游戏结束,不玩啦^_^")
print("哈哈,答案是{}".format(answer))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-23 13:23:41 | 显示全部楼层
这样,不然你输入大或者小都在前面两个判断内
if times == 1:
    print('机会用完了,就这样吧.') 
elif guess < secret:
    print('猜错了,小了')
elif guess > secret:
    print('猜错了,大了')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 13:33:13 | 显示全部楼层
你发的代码有问题吧
    if guess < secret and:
        print('猜错了,小了')
这个and是什么鬼????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 13:33:48 | 显示全部楼层
本帖最后由 jackz007 于 2021-2-23 13:55 编辑
    if guess < secret and:
        print('猜错了,小了')                   # guess 小了走这里
    elif guess > secret:         
        print('猜错了,大了')                   # guess  大了走这里
    elif times == 1:     
        print('机会用完了,就这样吧.')           # 只有 guess == secret 而且 times == 1 才会走这里
    而维持循环条件又是 while guess != secret and times < 3,所以,带红字的语句永远也不可能被执行到。
    试一下这个代码:
import random
print("欢迎来到'猜一猜'小游戏\n")
secret = random . randint(1,10)
print('你能猜到我心里面所想的数字吗\n(你只有三次机会)?')
for times in range(3):
    print()
    guess = int(input("请输入数字:"))
    if guess == secret:
        print('这么厉害,这你都知道?')
        break
    else:
        if guess < secret:
            print('猜错了,小了')
        else:
            print('猜错了,大了')
        if times < 2:
           print('再猜猜看吧。')
else:
    print('很遗憾,机会用完了。\n其实,我心里面的数字是' , secret)
print('没意思,不玩了。')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 14:39:01 | 显示全部楼层    本楼为最佳答案   
"""用Python设置第一个游戏"""
import random
answer = random.randint(1, 10)

counts = 3
print("你一共有{}次机会哦!".format(counts))
print("答案在1到10之间!")

while counts > 0:
    print("-----------------------------------------")
    temp = input("不妨猜一下我现在心里想的是哪个数字:")
    guess = int(temp)
     
    if guess == answer:
        print("你是我心里的蛔虫吗?!")
        print("哼!猜中了也没奖励!")
        break

    elif guess < answer:
        print("猜小了")
        print('你还剩{}次机会哦!'.format(counts - 1)) 
    else:
        if guess > answer:
            print("猜大了")
            print('你还剩{}次机会哦!'.format(counts - 1))

    counts -= 1


print("游戏结束,不玩啦^_^")
print("哈哈,答案是{}".format(answer))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 15:33:10 | 显示全部楼层
本帖最后由 crisfo 于 2021-2-23 15:35 编辑

print('欢迎来到\'猜一猜\'小游戏\n')
import random
secret = random.randint(1,10)
times = 0  #times从0开始
guess = int(input('你能猜到我心里面所想的数字吗?\n(只有三次机会):'))
while guess != secret and times < 3:
    times += 1  # 从0开始每次加1
    if guess < secret and:
        print('猜错了,小了')
    elif guess > secret:
        print('猜错了,大了')
    elif times == 1: # times放这里不合适,因为不论你猜大了还是猜小了,都应该判定一下times是不是已经3次了,同时这里还有一个问题就是guess跟secret相等才行,而你的while后面条件是guess跟secret不相等才能进入循环,逻辑上有些问题。
        print('机会用完了,就这样吧.')
    guess = int(input('猜错了哦,再猜猜看吧:'))
if guess == secret:
    print('这么厉害,这你都知道.\n没意思,不玩了.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 21:47:22 | 显示全部楼层
crisfo 发表于 2021-2-23 15:33
print('欢迎来到\'猜一猜\'小游戏\n')
import random
secret = random.randint(1,10)

times放在那里是想让它在3次机会用完并且提示大小后打印出结束语。
guess第一次猜中后就直接结束,没猜中的话就进入循环继续猜,所以我用地是guess != secret这个条件。
后面我把elif改成了if,还借助break改好了,如下:

print('欢迎来到\'猜一猜\'小游戏\n')
import random
secret = random.randint(1,10)
times = 0
guess = int(input('你能猜到我心里面所想的数字吗?\n(只有三次机会):'))
while guess != secret and times < 3:
    times += 1
    if guess < secret:
        print('猜错了,小了')
    else:
        print('猜错了,大了')
    if times == 3:
        print('机会用完了,就这样吧.')
        break

    guess = int(input('再猜猜看吧:'))
if guess == secret:
    print('这么厉害,这你都知道.\n没意思,不玩了.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 21:55:26 | 显示全部楼层
昨非 发表于 2021-2-23 13:33
你发的代码有问题吧
    if guess < secret and:
        print('猜错了,小了')

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

使用道具 举报

 楼主| 发表于 2021-2-23 22:33:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 22:42:03 | 显示全部楼层

你就是把我那个answer改成你那个secret就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 22:44:28 | 显示全部楼层
我刚开始也是想搞一个还剩几次机会,然后脑子里就蹦出来了format
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 22:45:39 | 显示全部楼层
问题解决了请设最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-31 06:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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