您的位置 首页 > 数码极客

[如何判断一个字符串是不是数字]如何判断一个字符串是不是数字c语言

最近写项目加学前端,python的知识点更新有点少了,抱歉。
这里更新一篇小文章,仅仅是个小练习,考验学python的朋友思维严密性。

题目:

判断一个变量是不是数字?

str_list1 = [1234, '134', '134.151', '-134','一二三', '正三四五', '负四五六', '正三点一四一五'] str_list2 = ['-', '--13', '34..421', '.134']

题目要求:

类似str_list1内部元素的变量都判为数字,类似str_list2内部元素的变量都判为非数字!

代码答案:

看答案之前最好尝试自己写一下,写完了再和我写的对比一下:

def isnumber(str_number): # 判断字符串是不是数字 if type(str_number) is int or type(str_number) is float: # 如果参数是数字型或浮点型,返回True return True if type(str_number) != str or len(str_number) < 1: # 如果参数不是字符串型或长度小于1,返回False return False symbol1 = ('+', '-', '正', '负') # 正负号 symbol2 = ('.', '点') # 小数点 if str_number[0] in symbol1: # 如果首字符是符号,那么整个字符串去除符号 str_number = str_number[1:] if len(str_number) < 1: # 如果去除符号后长度为0,判断不是数字 return False elif str_number[0] in symbol2: # 首字符不能为小数点 return False number = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '零', '一', '二', '三', '四', '五', '六', '七', '八', '九') # 匹配模板 result = True # 预设结果是True point_times = 0 # 小数点次数 str_len = len(str_number) # 计算整个字符串长度 for i in range(str_len): # 遍历整个字符串 if str_number[i] in symbol2: # 如果当前字符是小数点 point_times += 1 # 小数点次数+1 if point_times > 1: # 小数点出现次数多于1个 result = False # 判断字符串不是数字 break elif str_number[i] not in number: # 如果当前字符不在模板内 result = False # 判断字符串不是数字 break return result str_list1 = [1234, '134', '134.151', '-134', '一二三', '正三四五', '负四五六', '正三点一四一五'] str_list2 = ['-', '--13', '34..421', '.134'] for i in str_list1: print(f"当前参数{i}{'是数字!' if isnumber(i) else '不是数字!'}") print('-'*50) for i in str_list2: ret = '是数字!' if isnumber(i) else '不是数字!' print(f"当前参数{i}{'是数字!' if isnumber(i) else '不是数字!'}") out: 当前参数1234是数字! 当前参数134是数字! 当前参数134.151是数字! 当前参数-134是数字! 当前参数一二三是数字! 当前参数正三四五是数字! 当前参数负四五六是数字! 当前参数正三点一四一五是数字! -------------------------------------------------- 当前参数-不是数字! 当前参数--13不是数字! 当前参数34..421不是数字! 当前参数.134不是数字!

总结:

从一个简单的小需求分析,判断各种情况,锻炼思维严密性。

  1. 考虑问题细致全面,如果有没考虑到的情况那么就会导致结果不符合预期。请看案例中针对参数是int型和float型直接返回True;参数不是str或长度小于1直接返回False;参数只有一个符号无数字直接返回False;参数首字符是小数点的返回False。
  2. 写程序的时候一定要注意考虑扩展性,不能把内容写死,请注意看元组number、symbol1和symbol2的写法。假设我们需要对中文“壹、贰、叁、 肆、伍、陆、柒、捌、 玖、零、拾、佰、仟、万、 亿、兆”进行判断时,可以扩充number列表。
  3. 可以使用元组的场合优先用元组,请仔细看number、symbol1和symbol2,虽然它们也可以被定义为列表,但由于它们内部元素在程序运行时不需要修改,所以定义为元组是最佳选择。使用元组比列表更省内存,访问速度也略微快一些。
  4. 请认真看元组symbol1、symbol2和number定义的位置,在一系列判断条件以后才写,这样可以略微提高程序运行速度,变量在需要的时候才定义。
  5. 能放在循环外面做的事情一定要放在循环外面做,请注意str_len = len(str_number) 这条语句不写,放在下面for i in range(1, len(str_number)):。这样会影响循环的效率。


责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何判断一个字符串是不是数字,如何判断一个字符串是不是数字c语言,如何判断一个字符串是不是数字和字母组合,如何判断一个字符串是不是数字java”边界阅读