jackiepollock 发表于 2020-8-26 08:21:14

我哪儿错了?第5课闲聊之Python的数据类型课后测试题


Hello大家,我按照第五课学习内容写了一篇代码(请看下方),目的是猜中目标数字5.5,并且在用户输入的不是小数的时候提醒他们,但是在执行的时候,却出现了这样的问题:

不妨猜一下小甲鱼现在心里想的是哪个数字:5
抱歉,输入不合法,请输入小数 5.6
没了

也就是说,在用户被提醒输入小数后,小数被输入进去,但是却没有进入else,进行guess(答案)与用户输入关系的判断,这是为什么呢?求大神指点解答。


——————————————————————————————————————————————————————————————————————————————————————————————————————

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
ifnot isinstance(temp, float):
      print( '抱歉,输入不合法,请输入小数' , end=' ')
      temp= input( )
      guess= float(temp)
else:
    if guess == 5.5:
      print('哇')
      print('哼')
    while (guess != 5.5):
      temp = input("GIVE ANOTHER TRY:")
      guess = int(temp)
      if guess == 5.5:
            print('哇')
            print('哼')
      else:
            if guess>5.5:
                print('大了')
            else:
                print('小了')
print('没了')

——————————————————————————————————————————————————————————————————————————————————————————————————————

baige 发表于 2020-8-26 08:28:24

本帖最后由 baige 于 2020-8-26 08:36 编辑

进入if语句然后提示输入,你输入之后当然不会去执行下面的else,
if, else 只会执行一个

baige 发表于 2020-8-26 08:30:34

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
ifnot isinstance(temp, float):
    print( '抱歉,输入不合法,请输入小数' , end=' ')
    temp= input( )
    guess= float(temp)

if guess == 5.5:
    print('哇')
    print('哼')
while (guess != 5.5):
    temp = input("GIVE ANOTHER TRY:")
    guess = float(temp)
    if guess == 5.5:
      print('哇')
      print('哼')
    else:
      if guess>5.5:
            print('大了')
      else:
            print('小了')
print('没了')

昨非 发表于 2020-8-26 08:46:45

我有个疑问,既然要判断输入是否为浮点型,为啥要
guess = int(temp)

baige 发表于 2020-8-26 08:49:41

昨非 发表于 2020-8-26 08:46
我有个疑问,既然要判断输入是否为浮点型,为啥要

我觉得第一次是故意这样设置的,后面的就是写错了

昨非 发表于 2020-8-26 08:56:13

baige 发表于 2020-8-26 08:49
我觉得第一次是故意这样设置的,后面的就是写错了

测试用的吧,明白了

昨非 发表于 2020-8-26 09:01:26

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
ifnot isinstance(temp, float):
    print( '抱歉,输入不合法,请输入小数' , end=' ')
    temp= input( )
    guess= float(temp)

if guess == 5.5:
    print('哇')
    print('哼')
while (guess != 5.5):
    temp = input("GIVE ANOTHER TRY:")
    guess = float(temp)
    if guess == 5.5:
      print('哇')
      print('哼')
    elif guess>5.5:
      print('大了')
    else:
      print('小了')
print('没了')


下边循环判断的缩进完全可以改,
如图https://s1.ax1x.com/2020/08/26/d257hn.png

jackiepollock 发表于 2020-8-26 16:38:45

baige 发表于 2020-8-26 08:49
我觉得第一次是故意这样设置的,后面的就是写错了

嗯嗯,是写错了

jackiepollock 发表于 2020-8-26 16:44:37

baige 发表于 2020-8-26 08:28
进入if语句然后提示输入,你输入之后当然不会去执行下面的else,
if, else 只会执行一个

那进入if语句然后提醒我输入后,不管我输入的内容是什么,都会直接跳到下一步print(没了)是吗?

jackiepollock 发表于 2020-8-26 16:45:44

昨非 发表于 2020-8-26 09:01
下边循环判断的缩进完全可以改,
如图

同意,谢谢!

jackiepollock 发表于 2020-8-26 16:52:11

baige 发表于 2020-8-26 08:28
进入if语句然后提示输入,你输入之后当然不会去执行下面的else,
if, else 只会执行一个

我还有一个疑问,即在我原先写的这个程序里,即使我一开始输入5.7(小数),它都不会直接进入else进行判断,而是还是出现“抱歉,输入不合法,请输入小数‘”,这是为什么捏?

baige 发表于 2020-8-26 16:56:02

本帖最后由 baige 于 2020-8-26 16:58 编辑

jackiepollock 发表于 2020-8-26 16:52
我还有一个疑问,即在我原先写的这个程序里,即使我一开始输入5.7(小数),它都不会直接进入else进行判 ...

guess = int(temp)
一开始输入5.7应该报错才对
guess = float(temp)如果是这样的话你只是把浮点型的temp给guess,但temp本身还是字符串(str)

baige 发表于 2020-8-26 17:04:54

ifnot isinstance(temp, float):
    print( '抱歉,输入不合法,请输入小数' , end=' ')
    temp= input( )
    guess= float(temp)
这一段只是再让你输入1个数字

jackiepollock 发表于 2020-8-26 17:31:47

baige 发表于 2020-8-26 16:56
guess = int(temp)
一开始输入5.7应该报错才对
guess = float(temp)如果是这样的话你只是把浮点型的t ...

嗯嗯,完全理解了,谢谢你的答案,很有帮助。

cjxax 发表于 2020-9-2 15:58:10

while 后面的if guess == 5.5:
      print('哇')
      print('哼')有必要吗?
页: [1]
查看完整版本: 我哪儿错了?第5课闲聊之Python的数据类型课后测试题