# 小数一定包含'.'这是作为判断的第一个条件
# 开头不能是'.'作为第二个判断条件
# 结尾不能是'.'作为第三个判断条件
def is_float(price):
"""判断是否为小数的函数"""
if price.count('.') == 1: # 小数有且仅有一个小数点
left = price.split('.')[0] # 小数点左边(整数位,可为正或负)
right = price.split('.')[1] # 小数点右边(小数位,一定为正)
lright = '' # 取整数位的绝对值(排除掉负号)
if price.count('-') == 1 and price[0] == '-': # 如果整数位为负,则第一个元素一定是负号
lright = left.split('-')[1]
elif price.count('-') == 0:
lright = left
else:
print('%s 不是小数' % price)
if right.isdigit() and lright.isdigit(): # 判断整数位的绝对值和小数位是否全部为数字
print('%s 是小数' % price)
if float(price) <= 0: # 这里可以加一个正负数的判断
print('请输入一个正数')
else:
print('%s 不是小数' % price)
else:
print('%s 不是小数' % price)
# 调用函数
while True:
price = input('请输入一个数字:')
is_float(price)