默默佩佩 发表于 2020-7-2 12:27:51

不知道哪里错了《零基础入门学习Python》第05讲| 课后测试题..

本帖最后由 默默佩佩 于 2020-7-2 12:29 编辑

import random
secret = random.randint(1,10)
print('---------我爱鱼c工作室----------')
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
while type(temp) != type(1):
    print('抱歉,输入不合法,',end='')
    temp = input('请输入一个整数:')   
while guess != secret:
    temp = input('哎呀,猜错了请重新输入:')
    guess = int(temp)
    if guess == secret:
      print('哇草,你是小甲鱼心里的蛔虫吗?')
      print('哼,猜中了也没有奖励')
    else :
      if guess > secret:
            print('哥,大了大了~~')
      else :
            print('嘿,小了!小了!!')
print('游戏结束,不玩啦~~')

qiuyouzhi 发表于 2020-7-2 12:29:56

???
所以你的问题是啥??

Twilight6 发表于 2020-7-2 12:31:00

本帖最后由 Twilight6 于 2020-7-2 12:45 编辑



你的代码错在:input 返回的是字符串,所以 type(temp) 一定为 str,而永远不可能为int ,所以这个条件永远不会成立,照成你的死循环

你可以用字符串方法str.isdigit() 来判断字符串内是不是全是数字,你在学几课下去就会涉及到字符串方法的~:

isdigit() : 如果字符串只包含数字则返回 True,否则返回 False。

正确代码:
import random
secret = random.randint(1,10)
print('---------我爱鱼c工作室----------')
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

while not temp.isdigit():
    print('抱歉,输入不合法,',end='')
    temp = input('请输入一个整数:')
guess = int(temp)
while guess != secret:
    temp = input('哎呀,猜错了请重新输入:')
    guess = int(temp)
    if guess == secret:
      print('哇草,你是小甲鱼心里的蛔虫吗?')
      print('哼,猜中了也没有奖励')
    else :
      if guess > secret:
            print('哥,大了大了~~')
      else :
            print('嘿,小了!小了!!')
print('游戏结束,不玩啦~~')



在你的基础上进行部分改进哈:
import random
secret = random.randint(1,10)
guess = 0
print('---------我爱鱼c工作室----------')
print("不妨猜一下小甲鱼现在心里想的是哪个数字:",end='')# end 参数是 print 的默认参数,默认值是 \n 换行符 我们这里重新将end 赋值,让 print 函数不换行~
while guess != secret:
    temp = input()
    while not temp.isdigit():
      print('抱歉,输入不合法,', end='')
      temp = input('请输入一个整数:')
    guess = int(temp)
    if guess > secret:
      print('哥,大了大了~~')
      print('请重新输入:',end='')
    if guess < secret:
      print('嘿,小了小了~~')
      print('请重新输入:',end='')
if guess == secret:
    print('哇草,你是小甲鱼心里的蛔虫吗?')
    print('哼,猜中了也没有奖励')
print('游戏结束,不玩啦~~')



qiuyouzhi 发表于 2020-7-2 12:31:53

import random
secret = random.randint(1,10)
print('---------我爱鱼c工作室----------')
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
while type(guess) != type(1):
    print('抱歉,输入不合法,',end='')
    temp = input('请输入一个整数:')
while guess != secret:
    temp = input('哎呀,猜错了请重新输入:')
    guess = int(temp)
    if guess == secret:
      print('哇草,你是小甲鱼心里的蛔虫吗?')
      print('哼,猜中了也没有奖励')
    else :
      if guess > secret:
            print('哥,大了大了~~')
      else :
            print('嘿,小了!小了!!')
print('游戏结束,不玩啦~~')

俞俞名义 发表于 2020-7-2 13:10:11

第五行你的把转化数字类型的都给了guess,判断你又拿回之前的temp了

1815702237 发表于 2020-7-2 14:42:54

直接在input接受的时候转成整形就好了

import random
secret = random.randint(1,10)
print('---------我爱鱼c工作室----------')
temp = int(input("不妨猜一下小甲鱼现在心里想的是哪个数字:"))
guess = int(temp)

while type(temp) != type(1):
    print('抱歉,输入不合法,',end='')
    temp = input('请输入一个整数:')   
while guess != secret:
    temp = input('哎呀,猜错了请重新输入:')
    guess = int(temp)
    if guess == secret:
      print('哇草,你是小甲鱼心里的蛔虫吗?')
      print('哼,猜中了也没有奖励')
    else :
      if guess > secret:
            print('哥,大了大了~~')
      else :
            print('嘿,小了!小了!!')
print('游戏结束,不玩啦~~')

默默佩佩 发表于 2020-7-2 18:15:07

qiuyouzhi 发表于 2020-7-2 12:31


好像运行不出来啊

默默佩佩 发表于 2020-7-2 18:16:22

Twilight6 发表于 2020-7-2 12:31
你的代码错在:input 返回的是字符串,所以 type(temp) 一定为 str,而永远不可能为int ,所以这个条 ...

不用你说的这个isdigit()行吗,还没学呢,我看课后测试答案没用这个呢

Twilight6 发表于 2020-7-2 18:17:43

默默佩佩 发表于 2020-7-2 18:16
不用你说的这个isdigit()行吗,还没学呢,我看课后测试答案没用这个呢


可以用try-except,但是你的错误捕获也还没学哈~最接近的就是用这个了,你学几节课就到了 很快的~~

加油吧~

Twilight6 发表于 2020-7-2 18:21:14

本帖最后由 Twilight6 于 2020-7-2 18:39 编辑

默默佩佩 发表于 2020-7-2 18:16
不用你说的这个isdigit()行吗,还没学呢,我看课后测试答案没用这个呢

我刚刚去看了下,第五讲已经学了 字符串方法了!

默默佩佩 发表于 2020-7-2 23:23:51

Twilight6 发表于 2020-7-2 18:21
我刚刚去看了下,第五讲已经学了 字符串方法了!

感谢,知道了

默默佩佩 发表于 2020-7-2 23:24:38

1815702237 发表于 2020-7-2 14:42
直接在input接受的时候转成整形就好了

好像没运行出来
页: [1]
查看完整版本: 不知道哪里错了《零基础入门学习Python》第05讲| 课后测试题..