1.今天遇到一个问题如果输入的是字符串还是整数或者是小数如何将他们区分
首先isdigit()只能用来判断字符串输入的是否是整数,无法判断是否是小数
所以,先判断该字符串是否是整数,如果是返回3,
不是的话说明是字母或者是小数,然后判断是否是小数,如果是小数的话返回1,
是字母的或其他的话返回2
代码语言:javascript复制def is_float(i):
if i.isdigit():#只能用来判断整数的字符串
return 3
else:
if i.count('.') == 1: # 先判断里面有没有小数点
new_i = i.split('.') # 去掉小数点
right = new_i[-1] # 将小数分为小数点右边
left = new_i[0] # 小数点左边
if right.isdigit(): # 如果小数点右边是数字判断小数点左边
if left.isdigit(): # 如果小数点左边没有-直接返回
return 1
elif left.count('-') == 1 and left.startswith('-'): # 如果小数点左边有-
new_left = left.split('-')[-1] # 判断去掉后的还是不是数字
if new_left.isdigit(): # 是数字则返回True
return 1
else:
return 2 # 返回2说明是字母
输入例子:1.2,-1.2,.2,-2.
def is_float(i):
if i.count('.') == 1:#先判断里面有没有小数点
new_i = i.split('.')#去掉小数点
right = new_i[-1]#将小数分为小数点右边
left = new_i[0]#小数点左边
if right.isdigit():#如果小数点右边是数字判断小数点左边
if left.isdigit():#如果小数点左边没有-直接返回
return True
elif left.count('-')== 1 and left.startswith('-'):#如果小数点左边有-
new_left = left.split('-')[-1]#判断去掉后的还是不是数字
if new_left.isdigit():#是数字则返回True
return True
else:
return False
更简单的判断方法:
代码语言:javascript复制while True:
num = input("请输入一个数字:")
try:
n1=eval(num)
except:
print("输入的不是数字程序结束")
break
if isinstance(n1,float):
print('输入的是小数请重新输入:')
continue
else:
print("输入的是整数没问题")