LYqiang 发表于 2017-9-21 22:30:49

python第五课测试题遇到的一个问题

本帖最后由 LYqiang 于 2017-9-21 22:32 编辑

第五课的的测试题


0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。

如果你尝试过以下做法,请举下小手:
1.temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
2.# 这种想法是因为type(1)会返回<class 'int'>,如果type(temp)返回结果一致说明输入是整数。
3.while type(temp) != type(1):
4.    print("抱歉,输入不合法,", end='')
5.    temp = input("请输入一个整数:")

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 21 20:53:57 2017

@author: Administrator
"""
#导入随机数
import random

#生成一个随机的1-100之间的整数
guess = random.randint(1,100)

#控制次数为3次
i = 3
while i:
    num = input('请输入1到100之间的数字')   
    #限制用户只能输入整数
    #如果用户输入的不是整数则游戏结束
    if type(num) == type(1):
      #限制用户只能输入1-100之间的整数
      if 0 < num < 100:   
            if num == guess:
                print('你好聪明')
                break
            else:
                print('你猜错了')
      else:
            print('你输入的数字范围错误,游戏结束')
            break
    else :
      print('你输入的数字不合法,', end = ' ')
      break
    #每次循环-1
    i -= 1
print('游戏结束')
print('guess的值为',guess)

输入的类型为整型,这个地方加上代码之后总是出错,求指点

ba21 发表于 2017-9-21 22:47:48

判断是否输入为 数字 建议用 num.isdigit() ; 如果是则转换成 整形 int(num)如果不是则提示输入错误。

baicel21314 发表于 2017-9-22 08:33:13

原因是因为input 的输出类型为字符串,并不是整数,详细请help(input)查看

丶丨叚笑 发表于 2017-9-22 11:03:57

你在nun = input()这条下面加一条:
num=int(nun)
或者加这条:
while not num.isdigit:
    num = input()

你再试试看,input输入的信息是字符串。
你可以测试下:
temp = input('number=')
type(temp)

mass 发表于 2017-9-22 15:19:52

因为不管你输入什么,input()返回的都是字符串,判断一个字符串是不是能转化成数字需要用到别的方法(通常用isdigit()),不管是小数还是整数都会返回True,这样写出来的程序输入小数也不会报错{:10_269:};也有别的笨法能强制输入整数让程序不崩溃:把1-100的数字转化成字符串放到列表(比如list1)里,然后判断你输入的内容是不是包含在list1里面(if num in list1),只要输入的内容没包含在list1里面就让用户重新输入直到输入的内容合法,此法虽笨但是万无一失……

古堡主人。 发表于 2017-9-22 17:33:56

num = input('请输入1到100之间的数字')   
第16行要这么写num = int(input('请输入1到100之间的数字'))
先把字符串转为int然后判断,不然字符串始终不会和1是一个类型,永远执行else

LYqiang 发表于 2017-9-27 08:59:15

ba21 发表于 2017-9-21 22:47
判断是否输入为 数字 建议用 num.isdigit() ; 如果是则转换成 整形 int(num)如果不是则提示输入错误。

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 21 20:53:57 2017

@author: Administrator
"""
#导入随机数
import random

#生成一个随机的1-100之间的整数
guess = random.randint(1,100)

#控制次数为3次
i = 3

while i:
    num = input('请输入1到100之间的数字')   
    #限制用户只能输入整数
    #如果用户输入的不是整数则游戏结束
    if num.isdigit():
      #num的值为纯数字,则将num转型为整型
      num = int(num)
      #限制用户只能输入1-100之间的整数
      if 0 < num < 100:   
            if num == guess:
                print('你好聪明')
                break
            else:
                print('你猜错了')
      else:
            print('你输入的数字范围错误,游戏结束')
            break
    else :
      print('你输入的数字不合法,', end = '')
      break
    #每次循环-1
    i -= 1
print('游戏结束')
print('guess的值为',guess)
页: [1]
查看完整版本: python第五课测试题遇到的一个问题