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)
输入的类型为整型,这个地方加上代码之后总是出错,求指点 判断是否输入为 数字 建议用 num.isdigit() ; 如果是则转换成 整形 int(num)如果不是则提示输入错误。 原因是因为input 的输出类型为字符串,并不是整数,详细请help(input)查看 你在nun = input()这条下面加一条:
num=int(nun)
或者加这条:
while not num.isdigit:
num = input()
你再试试看,input输入的信息是字符串。
你可以测试下:
temp = input('number=')
type(temp) 因为不管你输入什么,input()返回的都是字符串,判断一个字符串是不是能转化成数字需要用到别的方法(通常用isdigit()),不管是小数还是整数都会返回True,这样写出来的程序输入小数也不会报错{:10_269:};也有别的笨法能强制输入整数让程序不崩溃:把1-100的数字转化成字符串放到列表(比如list1)里,然后判断你输入的内容是不是包含在list1里面(if num in list1),只要输入的内容没包含在list1里面就让用户重新输入直到输入的内容合法,此法虽笨但是万无一失…… num = input('请输入1到100之间的数字')
第16行要这么写num = int(input('请输入1到100之间的数字'))
先把字符串转为int然后判断,不然字符串始终不会和1是一个类型,永远执行else 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]