合法数字根据其输入有几种分类:
正数、负数、整数、小数
首先按照字符从前往后遍历顺序,最先遇到
符号位
,所以我们率先完成对于正/负的判断
-
通过字符串首位,即符号位来区分正数/负数,如果首位不为‘+’or'-'号,默认为正数
#验证输入合法性,e为输入的字符串,数据类型string
def is_legal(e):
if e[0] != '+' or e[0] != '-':#无符号位,默认为正数
num = e[0:]
#补充代码
elif e[0] == '+' or e[0] == '-':#有符号位,对去掉符号位的num 进行检验
num = e[1:]#对e截断,去掉符号位
#补充代码
else:
return False
-
完成对输入字符正负号的检验后,再对去掉符号位的num进行整数/小数的判断
def is_legal(e):
#区分正数和负数
if e[0] != '+' or e[0] != '-':#无符号位,默认为正数
num = e[0:]
#接下来区分num 是小数还是整数
if num.isdigt():#若输入字符全为数字,即验证num是否为整数
#补充代码
if num.count('.')==1:#输入字符包含一个数量的小数点
#补充代码
elif e[0] == '+' or e[0] == '-':#有符号位,对去掉符号位的num 进行检验
num = e[1:]
# 接下来区分num 是小数还是整数
if num.isdigt(): # 若输入字符全为数字,即验证num是否为整数
#补充代码
if num.count('.') == 1: # 输入字符包含一个数量的小数点
#补充代码
else:
return False # 输入不合法
else:
return False
-
num整数时:需要去掉字符长度大于1且以0 开头的非法数字
def is_legal(e):
#区分正数和负数
if e[0] != '+' or e[0] != '-':#无符号位,默认为正数
num = e[0:]
#接下来区分num 是小数还是整数
if num.isdigt():#若输入字符全为数字,即验证num是否为整数
#排除以0开头长度大于1的不合法数字
if len(num)>1 and num[0] == 0:
return False
else:
return True
if num.count('.')==1:#输入字符包含一个数量的小数点
#补充代码
elif e[0] == '+' or e[0] == '-':#有符号位,对去掉符号位的num 进行检验
num = e[1:]
# 接下来区分num 是小数还是整数
if num.isdigt(): # 若输入字符全为数字,即验证num是否为整数
# 排除以0开头长度大于1的不合法数字
if len(num) > 1 and num[0] == 0:
return False
else:
return True
if num.count('.') == 1: # 输入字符包含一个数量的小数点
#补充代码
else:
return False # 输入不合法
else:
return False
num小数时:需要以‘.’split num为小数点左边的整数部分left和小数点右边的小数部分right,并用isdigit()检验两部分是否全为数字输入,完整代码如下:
def is_legal(e):
#区分正数和负数
if e[0] != '+' or e[0] != '-':#无符号位,默认为正数
num = e[0:]
#接下来区分num 是小数还是整数
if num.isdigt():#若输入字符全为数字,即验证num是否为整数
#排除以0开头长度大于1的不合法数字
if len(num)>1 and num[0] == 0:
return False
else:
return True
if num.count('.')==1:#输入字符包含一个数量的小数点
left,right = num.split('.')[0],num.split('.')[1]
if left.isdigit() and right.isditgit():
return True
else:
return False
else:
return False#输入不合法
elif e[0] == '+' or e[0] == '-':#有符号位,对去掉符号位的num 进行检验
num = e[1:]
# 接下来区分num 是小数还是整数
if num.isdigt(): # 若输入字符全为数字,即验证num是否为整数
# 排除以0开头长度大于1的不合法数字
if len(num) > 1 and num[0] == 0:
return False
else:
return True
if num.count('.') == 1: # 输入字符包含一个数量的小数点
left, right = num.split('.')[0], num.split('.')[1]
if left.isdigit() and right.isditgit():
return True
else:
return False
else:
return False # 输入不合法
else:
return False
import unicodedata
x = input("请输入一个字符")
print(x.isdecimal())#检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
print(x.isalnum())#isalnum判断是否数字和字母的组合,如果包含空格就报false
print(x.isalpha())#用isalpha判断是否字母,不区分大小写
print(x.isdigit())#用isdigit函数判断是否数字
1.单数字
2.单字符串
Stringstr="ischar";
doublenum=Double.valueOf(str);//把字符串强制转换为数字
returntrue;//如果是数字,返回True
}catch(Exceptione){
returnfalse...
从控制输入一串字符串,要求字符串只能数字字母下划线,并且长度大于等于20,
若不符合条件重新输入,输入完毕之后,要求从控制台输入一个字符,使用自己输入的字符,
来对字符串进行切片,切片完毕之后,并且去掉空串,删除列表中的重复元素。
while 1:
str1 = input("请输入一个字符串:")
if len(str1) >= 20:
str2 = str...
* Author:Xu Zheng Wei
* E-mail:2518298846@qq.com
* 程序功能:用键盘输入10个数,合法数字为1、2、3,不是这三个数的都是非法数字,编程统计每个合法数字的个数和所有非法数字的个数。
package com.lianxiti;
import java.util.Scanner
# 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
# 括号必须以正确的顺序关闭:"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
# 左括号必须用相同类型的右括号闭合。
# 左括号必须以正确的顺序闭合。
# 注意空字符串可被认为是有效字符串。
思路:利用列表的append()和pop()函数实现栈先进后出的逻辑。
1、遍历输入字符串
2、如果当前字符为左半边括号时,则将其压入栈中
3、如果.
def Is_legalword(s):
for key in s:
if not key in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_':
return False
return True
def Is_legal(s):
if s[0]=='_' or s[0].is
最近在做相关的项目, 在用户输入信息时要对CEdit控件获取的字符串信息判断其是否为合法数字, 通常我们所理解的合法数字是:
1. 如果不为小数, 则字符串中应该不能包含0-9以外的其它字符, 并且按照习惯, 即使用户输入0900, 程序应该能够判断其为合法数字, 并且能够格式化为900
2. 如果为小数, 通常小数点只能在两个数字之间, 并且只能有一个小数点, 如合法的数字: 0.9
CSDN-Ada助手:
LEAD,LAG,ROW_NUMBER, CONCAT_WS,COLLECT_LIST 等SQL函数的练习
CSDN-Ada助手: