鱼C论坛

 找回密码
 立即注册
查看: 2852|回复: 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
  1. """用Python设置第一个游戏"""
  2. import random
  3. answer = random.randint(1, 10)

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

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

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

  23.     counts -= 1


  24. print("游戏结束,不玩啦^_^")
  25. print("哈哈,答案是{}".format(answer))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-23 13:23:41 | 显示全部楼层
这样,不然你输入大或者小都在前面两个判断内

  1. if times == 1:
  2.     print('机会用完了,就这样吧.')
  3. elif guess < secret:
  4.     print('猜错了,小了')
  5. elif guess > secret:
  6.     print('猜错了,大了')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2021-2-23 13:33:48 | 显示全部楼层
本帖最后由 jackz007 于 2021-2-23 13:55 编辑
  1.     if guess < secret and:
  2.         print('猜错了,小了')                   # guess 小了走这里
  3.     elif guess > secret:         
  4.         print('猜错了,大了')                   # guess  大了走这里
  5.     elif times == 1:     
  6.         print('机会用完了,就这样吧.')           # 只有 guess == secret 而且 times == 1 才会走这里
复制代码

    而维持循环条件又是 while guess != secret and times < 3,所以,带红字的语句永远也不可能被执行到。
    试一下这个代码:
  1. import random
  2. print("欢迎来到'猜一猜'小游戏\n")
  3. secret = random . randint(1,10)
  4. print('你能猜到我心里面所想的数字吗\n(你只有三次机会)?')
  5. for times in range(3):
  6.     print()
  7.     guess = int(input("请输入数字:"))
  8.     if guess == secret:
  9.         print('这么厉害,这你都知道?')
  10.         break
  11.     else:
  12.         if guess < secret:
  13.             print('猜错了,小了')
  14.         else:
  15.             print('猜错了,大了')
  16.         if times < 2:
  17.            print('再猜猜看吧。')
  18. else:
  19.     print('很遗憾,机会用完了。\n其实,我心里面的数字是' , secret)
  20. print('没意思,不玩了。')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

  23.     counts -= 1


  24. print("游戏结束,不玩啦^_^")
  25. print("哈哈,答案是{}".format(answer))
复制代码
小甲鱼最新课程 -> https://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没意思,不玩了.')
小甲鱼最新课程 -> https://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没意思,不玩了.')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

,,,,打错了,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 22:33:51 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你就是把我那个answer改成你那个secret就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2021-2-23 22:45:39 | 显示全部楼层
问题解决了请设最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 21:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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