鱼C论坛

 找回密码
 立即注册
查看: 300|回复: 16

如何判断键盘输入只是数字

[复制链接]
最佳答案
0 
发表于 2020-1-13 14:24:19 | 显示全部楼层 |阅读模式
1鱼币
需要处理输入的数字:整数或小数都可以,正的负的也行, 然后处理这个数字
如果输入了字母啊,特殊符号啊就不继续,如何实现


-3.2
3.2
3
都可以继续

ABC
@3.2
3.2@
就不行

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
239 
发表于 2020-1-13 14:40:54 | 显示全部楼层
  1. https://www.cnblogs.com/jebeljebel/p/4006433.html
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-1-13 14:53:31 | 显示全部楼层
利用ascii码和int型强制转换即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-1-13 15:00:01 | 显示全部楼层
def check_number(str):
  
  try:
    float(str)
    return True
  except ValueError:
    return False

myinput=input("请输入你要处理的数据\n")
if check_number(myinput):
    mynumber=abs(float(myinput))
    print("你想处理的数据为",mynumber)
else:
  print("输入了错误的数据格式,请重新输入")


搞定了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-1-13 15:00:53 | 显示全部楼层
def check_number(str):
  
  try:
    float(str)
    return True
  except ValueError:
    return False

myinput=input("请输入你要处理的数据\n")
if check_number(myinput):
    mynumber=abs(float(myinput))
    print("你想处理的数据为",mynumber)
else:
  print("输入了错误的数据格式,请重新输入")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-1-13 15:21:51 | 显示全部楼层

哦,是python啊,我以为是C呢,就当我上面那条没回答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
118 
发表于 2020-1-13 16:16:37 | 显示全部楼层
本帖最后由 sunrise085 于 2020-1-13 16:30 编辑

    1、第一部分,有且仅有一个负号(第一个and前),且负号前没内容(第一个and后),或没负号(第一个or后)
    之后一个and,分成前后两部分
    2、第二部分,有且仅有一个小数点(第一个and前),小数点前后都是数字(第二个and前后),或者没有小数点(第一个or后)

  1. str_number=input()
  2. if (len(str_number.split('-'))==2 and str_number.split('-')[0] is '' or len(str_number.split('-'))==1) and ((len(str_number.split('-')[-1].split('.'))==2 and str_number.split('-')[-1].split('.')[0]. isdigit() and str_number.split('-')[-1].split('.')[1]. isdigit()) or str_number.split('-')[-1].isdigit()):
  3.     print(str_number,'是数字')
  4. else:
  5.     print(str_number,'不是数字')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
81 
发表于 2020-1-13 16:38:07 | 显示全部楼层
  1. def is_number(String):
  2.     try:
  3.         eval(String * 1)
  4.         return True
  5.     except:
  6.         return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
81 
发表于 2020-1-13 16:41:51 | 显示全部楼层
sunrise085 发表于 2020-1-13 16:16
1、第一部分,有且仅有一个负号(第一个and前),且负号前没内容(第一个and后),或没负号(第一个or ...

要这么麻烦吗  不够Pythonc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
118 
发表于 2020-1-13 16:51:44 | 显示全部楼层
Stubborn 发表于 2020-1-13 16:41
要这么麻烦吗  不够Pythonc

你的要求是判断负号和小数点。
而负号小数点就要判断其位置和次数,
这是我能想到的最完整最简单的了。目前还没想到更精简的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
41 
发表于 2020-1-13 16:55:05 | 显示全部楼层
  1. def checkstr(s):
  2.     try:
  3.         float(s)
  4.         return True
  5.     except:
  6.         return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
81 
发表于 2020-1-13 17:06:40 | 显示全部楼层
sunrise085 发表于 2020-1-13 16:51
你的要求是判断负号和小数点。
而负号小数点就要判断其位置和次数,
这是我能想到的最完整最简单的了。 ...
  1. eval(String * 1)
复制代码


用这个,只要是数字,就不会报错,不是数字,会报NameError 未定义错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
118 
发表于 2020-1-13 17:22:05 | 显示全部楼层
Stubborn 发表于 2020-1-13 17:06
用这个,只要是数字,就不会报错,不是数字,会报NameError 未定义错误

我知道这种方法,但是是有问题的。这个eval只是除去了字符串外的引号,将之变成表达式而已
万一输入的是逗号呢?万一输入的是计算式呢?
例如:输入:563,23  结果会是True
输入523-3-6  结果是True

评分

参与人数 1荣誉 +1 鱼币 +3 贡献 +1 收起 理由
Stubborn + 1 + 3 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
81 
发表于 2020-1-13 17:36:40 | 显示全部楼层
sunrise085 发表于 2020-1-13 17:22
我知道这种方法,但是是有问题的。这个eval只是除去了字符串外的引号,将之变成表达式而已
万一输入的是 ...

非常感谢提醒,不过我还是比较愿意处理eval后面的,  例如可以这样修改, 数字正反不会变,其他的肯定会报错,或者个原来的不一样
  1. def is_number(String):
  2.     try:
  3.         return str(eval(String * 1)) == String
  4.     except:
  5.         return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
118 
发表于 2020-1-13 19:25:57 | 显示全部楼层
Stubborn 发表于 2020-1-13 17:36
非常感谢提醒,不过我还是比较愿意处理eval后面的,  例如可以这样修改, 数字正反不会变,其 ...

嗯嗯,学习了。还是eval()方便简洁~~


为什么要String*1?有什么说法么?我试了一下,不写 *1也没问题啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
81 
发表于 2020-1-13 19:59:06 | 显示全部楼层
sunrise085 发表于 2020-1-13 19:25
嗯嗯,学习了。还是eval()方便简洁~~

是我多虑了,想着转成数字后,支持 * 法,其他的不支持,从而导致报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
12 
发表于 5 天前 | 显示全部楼层
ascii码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2020-1-23 09:28

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表