monsterlou 发表于 2020-1-13 14:01:59

005课后作业

import random
secret = random.randint(1,10)
times = 3
guess = 11
print('你能猜到小甲鱼心里想的一个数字么:', end = '')
while not isinstance(guess, int):
    guess = input()
    print('输入非法字符', end = '')
    guess = input('请输入一个整数:')
while guess != secret and times:
    guess = input('')
    times = times - 1
    if guess == secret:
      print('恭喜你 答对了!!!')
    elif guess > secret:
      print('大了 大了')
    else:
      print('小了 小了')
    if times > 0:
            print('你还有机会哟', end = '')
    else:
            print('机会用完啦')
print('游戏结束')

大神能帮忙看下这段有什么问题么   报错了 但是我怎么都找不到错在哪里了

sunrise085 发表于 2020-1-13 14:24:01

本帖最后由 sunrise085 于 2020-1-13 14:34 编辑

报错是因为你的程序中input的值直接赋值给了guess,而input的返回值是字符串str不是整型int,所以在第16行 guess>secret 就出错了。

import random
secret = random.randint (1,10)
print("不妨猜一下我心里想的是哪个数字,给你三次机会。")
guess = 0
for i in range(3):
    print ('第',i+1,'次:', end= '')
    temp=input()
    while not temp.isdecimal():
      print("抱歉,输入不合法,", end='')
      temp = input("请输入一个整数:")
    guess = int(temp)
    if guess == secret:
      print("哇草,你是小甲鱼心里的蛔虫吗?")
      print ('哼,猜中了也没有奖励!')
      break
    else:
      if guess > secret:
            print ('哥,大了大了!')
      else:
            print("嘿,小了!小了!")
else:
    print ('3次都没猜对!')

print("游戏结束,不玩啦!")

zltzlt 发表于 2020-1-13 18:09:05

代码有许多错误,帮你重写了:

import random

secret = random.randint(1, 10)
times = 3
print('你能猜到小甲鱼心里想的一个数字么:', end='')
guess = input()

while not guess.isdigit():
    print('输入了非法字符,', end='')
    guess = input('请输入一个整数:')

guess = int(guess)

while guess != secret and times:
    times = times - 1
    if guess == secret:
      print('恭喜你 答对了!!!')
    elif guess > secret:
      print('大了 大了')
    else:
      print('小了 小了')
    if times > 0:
      print('你还有机会哟', end='')
    else:
      print('机会用完啦')
      break
    guess = int(input(''))
print('游戏结束')

WilsonWolf2333 发表于 2020-1-21 08:37:04

Hi, 我对你的代码理解如下,请看注释里的内容:
import random
secret = random.randint(1,10)
times = 3
guess = 11
print('你能猜到小甲鱼心里想的一个数字么:', end = '')
while not isinstance(guess, int): #因为第4行语句,所以isinstance(guess, int)为True,前面加not为False, 那么7-9行代码的循环永远不会执行
    guess = input()
    print('输入非法字符', end = '')
    guess = input('请输入一个整数:')
while guess != secret and times:
    guess = input('')
    times = times - 1
    if guess == secret: # ==左侧的数据类型是字符串,右侧是整型
      print('恭喜你 答对了!!!')
    elif guess > secret:
      print('大了 大了')
    else:
      print('小了 小了')
    if times > 0:
            print('你还有机会哟', end = '')
    else:
            print('机会用完啦')
print('游戏结束')

悲哀的猫 发表于 2020-2-5 11:23:32

input输入的默认是字符串,除非你用secret = int(secret)转换成整形
页: [1]
查看完整版本: 005课后作业