画个圈圈XZQ 发表于 2021-2-23 12:54:23

elif 的一个条件不会执行

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 13:23:41

这样,不然你输入大或者小都在前面两个判断内

if times == 1:
    print('机会用完了,就这样吧.')
elif guess < secret:
    print('猜错了,小了')
elif guess > secret:
    print('猜错了,大了')

昨非 发表于 2021-2-23 13:33:13

你发的代码有问题吧
    if guess < secret and:
      print('猜错了,小了')
这个and是什么鬼????

jackz007 发表于 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('没意思,不玩了。')

yayc_zcyd 发表于 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))

crisfo 发表于 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没意思,不玩了.')

画个圈圈XZQ 发表于 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没意思,不玩了.')

画个圈圈XZQ 发表于 2021-2-23 21:55:26

昨非 发表于 2021-2-23 13:33
你发的代码有问题吧
    if guess < secret and:
      print('猜错了,小了')


,,,,打错了,{:10_260:}

画个圈圈XZQ 发表于 2021-2-23 22:33:51

yayc_zcyd 发表于 2021-2-23 14:39


这个format行

yayc_zcyd 发表于 2021-2-23 22:42:03

画个圈圈XZQ 发表于 2021-2-23 22:33
这个format行

你就是把我那个answer改成你那个secret就行了

yayc_zcyd 发表于 2021-2-23 22:44:28

我刚开始也是想搞一个还剩几次机会,然后脑子里就蹦出来了format{:10_256:}

yayc_zcyd 发表于 2021-2-23 22:45:39

问题解决了请设最佳答案{:10_254:}
页: [1]
查看完整版本: elif 的一个条件不会执行