一锅兔子 发表于 2022-1-24 17:53:49

猜数字小游戏找bug

import random
c=random.randint(1,101)
print('这是一个猜数字小游戏\n你有10次机会')
print(c) #测试
x=int(input('请输入你猜的数字: '))
for i in range(9):
    if c>x:
      print('猜小了')
      x=int(input('请输入你猜的数字: '))

    if c<x:
      print('猜大了')
      x=int(input('请输入你猜的数字: '))
    else:
      print(f'恭喜你猜对了!答案是{x}\n你一共猜了{i+2}次')
      break
      

连续猜两个相同的数字就会出bug,直接显示猜对了
这是一个猜数字小游戏
你有10次机会
17
请输入你猜的数字: 7
猜小了
请输入你猜的数字: 7
恭喜你猜对了!答案是7
你一共猜了2次

ckblt 发表于 2022-1-24 18:21:52

import random


c=random.randint(1,101)

print('这是一个猜数字小游戏\n你有10次机会')
print(c) #测试

x=int(input('请输入你猜的数字: '))

for i in range(9):
    if c>x:
      print('猜小了')
      x=int(input('请输入你猜的数字: '))
    elif c<x:
      print('猜大了')
      x=int(input('请输入你猜的数字: '))
    else:
      print(f'恭喜你猜对了!答案是{c}\n你一共猜了{i+2}次')
      break

python爱好者. 发表于 2022-1-24 18:23:02

您可以把代码改成这样:
import random
c=random.randint(1,101)
print('这是一个猜数字小游戏\n你有10次机会')
print(c) #测试
x=int(input('请输入你猜的数字: '))
for i in range(9):
    if c>x:
      print('猜小了')
      x=int(input('请输入你猜的数字: '))

    if c<x:
      print('猜大了')
      x=int(input('请输入你猜的数字: '))
    else:
      print(f'恭喜你猜对了!答案是{x}\n你一共猜了{i+2}次')
      break
      

这里将第 11 行的:
if c<x
改成了:
elif c < x

因为这里您前面第 7 行就是 if 语句,
而这一行的意思就是判断用户猜的是不是小了,
但第 11 行 if c<x 就不应该这样写,
因为您前面写过 if c<x 判断过一次了,
下面应该直接写 elif c > x,
而不是 if c > x,
不然的话您这里这条语句无论前面的 if c<x判断结果指真或假,
也会执行 if c<x这一句,所以需要用到 elif 语句,
只有当上一条成立时才会执行下一条判断!


懂了吗?不懂可以再问!懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:}

YSW9527 发表于 2022-1-24 22:31:39

import random
c=random.randint(1,101)
print('这是一个猜数字小游戏\n你有10次机会')
print(c) #测试
x=int(input('请输入你猜的数字: '))
for i in range(9):
    if c==x:
      print(f'恭喜你猜对了!答案是{x}\n你一共猜了{i+2}次')
      break
    else:
      if c<x:
            print('猜大了')
            x=int(input('请输入你猜的数字: '))
      else:
         print('猜小了')
         x=int(input('请输入你猜的数字: '))
      
这样就ok了

Passepartout 发表于 2022-1-25 08:42:14

import random
c=random.randint(1,101)
print('这是一个猜数字小游戏\n你有10次机会')
print(c) #测试
x=int(input('请输入你猜的数字: '))
for i in range(9):
    if c>x:
      print('猜小了')
      x=int(input('请输入你猜的数字: '))

    if c<x:
      print('猜大了')
      x=int(input('请输入你猜的数字: '))
    else:
      print(f'恭喜你猜对了!答案是{x}\n你一共猜了{i+2}次')
      break

念清浅 发表于 2022-1-25 13:15:50

为啥只在else后面加break,而if后面不加呢? 一次循环有了结果就要重新循环。
页: [1]
查看完整版本: 猜数字小游戏找bug