有一个问题,如何检测输入的是数字还是文本
部分代码import random
shuzi=random.randint(1,10)
question=input("猜猜我心里在想什么数字呀:")
m=type(question)
if m==int:
print(question)
else:
print("请输入数字")
问题是输入的不管是数字还是字母,type(question)的值都是str
如何解决
谢谢大家
本帖最后由 Hello. 于 2020-7-24 16:30 编辑
input 永远是 str
这样改
question=int(input("猜猜我心里在想什么数字呀:"))
如果你要检测,给你点提示
s 为字符串
s.isalnum()所有字符都是数字或者字母,为真返回 True,否则返回 False。
s.isalpha() 所有字符都是字母,为真返回 True,否则返回 False。
s.isdigit() 所有字符都是数字,为真返回 True,否则返回 False。
s.islower() 所有字符都是小写,为真返回 True,否则返回 False。
s.isupper() 所有字符都是大写,为真返回 True,否则返回 False。
s.istitle() 所有单词都是首字母大写,为真返回 True,否则返回 False。
s.isspace() 所有字符都是空白字符,为真返回 True,否则返回 False。
例如:
>>> s = 'I LOVE FISHC'
>>> s.isupper()
>>> True
static/image/hrline/1.gif如果帮到你了,设置下最佳可好呀{:10_297:}
使用 .isdigit()
>>> a = "123"
>>> a.isdigit()
True
>>> b = "不是数字"
>>> b.isdigit()
False input的返回值是str,所以永远都是字符串。
不过若是要检查是否是纯数字字符串的话,可以用isdigit()来判断一下
question.isdigit()
input 是接收用户输入,并返回字符串,所以你的type 永远都是字符串
你上到第五课甲鱼哥就会教了,用字符串方法 isdigit() ,可以判断字符串内是纯数字,还是非纯数字,当是纯数字的时候返回 True ,不是则返回 False
给你一个小模板:
user = input('请输入一个整数:')
while not user.isdigit() or not ( 10 >= int(user) > 0):
user = input('抱歉!您输入的不是整数或输入的数字不在1~10范围内,请重新输入:')
print(user,'是整数字符串!')
所以你的部分代码可以这样改改:
import random
shuzi=random.randint(1,10)
question=input("猜猜我心里在想什么数字呀:")
while not question.isdigit():
question = input('你输入的不是一个整数噢!请重新输入:')
guess = int(question)
print(guess,'是个整数!')
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。
注意:input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
注意:python3 里 input() 默认接收到的是 str 类型。
import random
shuzi=random.randint(1,10)
question=input("猜猜我心里在想什么数字呀:")
if question.isdigit():
print(question)
else:
print("请输入数字")
页:
[1]