精华内容
下载资源
问答
  • 一个Shell 函数返回值引发的问题、该问题的Debug 过程以及结论。

    Debug 的过程比较无聊,所以这里先上结论和示例,Debug 的笔记看不看并没有什么乱用。

    结论

    在shell 中使用返回值,唯一具有通用性的方法是使用全局变量,或者写到标准输出并在父进程中接收。
    return 语句不能用来传递计算结果——return 语句是用来传递函数退出状态的,在几乎所有情况下,你的计算结果都不会是退出状态!
    任何违反上面规则的shell 脚本,都不具有通用性。

    示例

    #!/usr/bin/env bash
    # ======================================
    # 使用全局变量
    # 优点:返回值可以在所有情况下正确传递
    # 缺点:全局变量过多会让程序难以阅读
    # ======================================
    global_value=''
    function make_value {
      # 在这里做一些计算
      :
      # 然后设定全局变量
      global_value='value'
      # 返回出错码
      return $?
    }
    make_value
    # 判断函数是否执行成功
    if [[ 0 != $? ]]; then
      echo 'make_value 执行失败'
      exit $?
    fi
    # 读取存放在全局变量的结果
    echo "Now we get return value with $global_value"
    #!/usr/bin/env bash
    # ======================================
    # 使用标准输出传递返回值
    # 优点:在具有高可阅读性的同时正确传递返回值
    # 缺点:函数中不得有任何向stdout 流的输出
    # ======================================
    function make_value {
      # 在这里做一些计算
      local local_value='value'
      # 返回计算后的结果
      echo $local_value
      # 返回出错码
      return $?
    }
    local_value=$(make_value)
    # 判断函数是否执行成功
    if [[ 0 != $? ]]; then
      echo 'make_value 执行失败'
      exit $?
    fi
    # 读取存放在全局变量的结果
    echo "Now we get return value with $local_value"
    

    Debug

    最近把开发环境换到了Arch Linux,然而最近几天重新编译一下项目的时候遇到问题了:make过程中一个原本毫无问题的工具make_ext4fs必现除0 错误,导致生成的system.img为空!这种错误是非常致命而且低级的,一个原本运行良好的工具中不可能突然必现一个致命且低级的问题。

    追踪调用make_ext4fs的位置,发现是在脚本sprdisk/utils/build64.sh的第219 行:

            make_ext4fs -T -1 -S $ANDROID_PRODUCT_OUT/root/file_contexts -l $syssize -a system $ANDROID_PRODUCT_OUT/obj/PACKAGING/systemimage_intermediates/system.img $ANDROID_PRODUCT_OUT/system

    变量$ANDROID_PRODUCT_OUT是在source build/envsetup.sh之后就确定的,只有$syssize的值是在运行时确定,打印了一下这个变量的值,是不确定的数值,初步判断范围在0-200 之间。使用$syssize的值手动构造指令运行,除0 错误必现。

    追踪$syssize的来源,发现是通过函数get_system_img_size的返回值设置

        get_system_img_size
        syssize=$?

    打印了几次这个返回值,范围符合初步判断的范围,用这些返回值构造指令,除0 错误必现。

    追踪$syssize的计算过程,发现这个值和文件$ANDROID_PRODUCT_OUT/obj/PACKAGING/systemimage_intermediates/system_image_info.txtsystem_size字段相关

        while read line
        do
            item=$(echo $line | (awk -F "=" '{print $1}') | tr -d ' ')
            if [ $item = "system_size" ] ; then
                syssize=$(echo $line | (awk -F "=" '{print $2}') | tr -d ' ')
                ramdisksize=$(echo $(du -b $TOPDIR/ramdisk.img) | (awk '{print$1}') | tr -d ' ')
                syssize=$(expr $syssize + $ramdisksize)
                break
            fi
        done < $sysinfo

    grep 了一下这个文件,发现system_size字段的值接近6 亿,也就是在550MB 以上

    system_size=596555857

    用这个值手动加上$TOPDIR/ramdisk.img的字节数算出$syssize,构造make_ext4fs指令,成功执行。确定问题出在变量$syssize

    在函数内部打印该变量的值,发现函数返回时数值计算正确,锁定问题发生在函数返回值的接收上,也就是之前提到的这两行

        get_system_img_size
        syssize=$?

    整理之前的情况,掌握的条件如下:

    1. 函数调用后,返回值发生了改变
    2. 返回值的改变导致了make_ext4fs发生除0 错误
    3. 该问题在Ubuntu Kylin 上不出现,在Arch Linux 上必现

    确定是环境问题导致的函数返回值接收错误,首先怀疑是shell 的不同,于是确定一遍脚本的shebang line

    #!/bin/sh

    在Arch Linux 上确认一遍/bin/sh,发现指向/usr/bin/bash
    借用同事的Ubuntu Kylin 确认一遍/bin/sh,发现指向/usr/bin/dash
    整理得到的情报

    1. 问题在于函数返回值不能正确接收
    2. bashdash导致了这种不同

    因为没有安装dash,首先确认bash上的情况,man 1 bash发现如下的信息

    The return value of a simple command is its exit status, or 128+n if the command is terminated by signal n.

    这个值显然不过5 亿。

    事实上测试证明,bashreturn语句做多能够返回255 的整形,任何超过255 的返回值,都会被和255 取模并返回取模后的数值。
    dash对返回值和bash 的处理不同,会原封不动的返回return 语句后的数值。

    这就是为什么返回值发生了改变的原因:shell 的设计中,return语句是用来传递出错码而不是返回值的,所以不同的shell 对于return语句有不同的处理。

    这也得出一个结论:在Shell 脚本中return语句只能用来返回出错码,绝对不能返回任何计算结果,这不符合Shell 的设计原则,所以不具有通用性。

    最后出于保留系统全局设置的考虑,修改脚本使用标准输出传递返回值,编译通过。

    展开全文
  • 三目运算符的返回值类型

    千次阅读 2019-09-14 14:01:23
    三目运算符的返回值类型 三目运算符的基本语法和用途就不再赘述了, 本篇本章主要讨论Java中三目运算符的返回值 条件 ? 返回值1 : 返回值2 ...其实编译时, 就已经确定了三目运算的返回值类型,而且...

    三目运算符的返回值类型

    三目运算符的基本语法和用途就不再赘述了, 本篇本章主要讨论Java中三目运算符的返回值

    条件 ? 返回值1 : 返回值2 
    

    先来看一段测试代码:

    System.out.println(true ? 1 : 3.14);  // out: 1.0
    

    上述代码输出的是浮点数1.0,可能感到疑惑,难道不应该输出整数1吗?

    其实在编译时, 就已经确定了三目运算的返回值类型,而且只能是一种类型,不管你的三目条件判断为true 或 false 都是返回同一种类型。这就类似Java中的方法只能返回一种类型的数据。

    上面代码中返回值1的类型为int, 返回值2的类型为double, 为了做到返回同一种类型, 编译器自动寻找了这两种类型的相同父类——double(int类型可以自动向上转为double),于是最终的返回值类型就是double


    Object obj1 = true ? 1 : 3.14;
    System.out.println(obj1 instanceof Integer); // false
    System.out.println(obj1 instanceof Double);  // true
    

    上面的代码证明了这一想法。


    更多的测试例子:

    System.out.println(true ? 1 : 2);			// 1
    System.out.println(true ? 1 : 2.0);			// 1.0
    System.out.println(true ? 'a' : 2L);		// 97L
    System.out.println(true ? 'a' : 2);			// a
    System.out.println(true ? 'a' : Character.MAX_VALUE);		// a
    System.out.println(true ? 'a' : Character.MAX_VALUE + 1);	// 97
    

    总结:

    1. 如果返回值1和返回值2都是同种类型,那么三目最终的返回类型就是这种类型
    2. 如果返回值1和返回值2不是同种类型,那么三目最终的返回类型是这两种类型的相同最小父类(最接近的父类,如果没有则返回Object,例如Integer和String最终返回的将是Object)。
    3. 对于基本数据类型,有点特殊。如果一个返回值类型为T(T为byte,char或short),另一个为int的常数,那么如果这个常数值在T的取值范围内,则三目最终的返回类型为T,如果常数值不在T的取值范围内,则返回发生自动类型转换(从上面测试代码的最后四条中可以看到)。

    总结一下就是,三目运算符没有我们想象的那么简单,其中类型转换的“潜规则”也需要深入了解底层。如果在开发中需要使用三目运算符,那么就尽量让它的返回值相同吧。

    展开全文
  • 产生及判断NaN及INFINITE数值

    万次阅读 2013-12-02 13:00:50
    1. 数据类型size太大,浪费内存:这个数据类型用来表示浮点数,x86 32位机器上竟然需要100多个字节。 (浮点数只需要4字节啊,IBM的大神们) 2. 操作效率低下,来回和string相倒换,有时候完全没有必要。 3. ...

    本人工作中经常需要用到NaN及Inf浮点数,原来使用是IBM公司封装的CDecfloat数据类型,后来发现这个数据类型的许多缺点:

    1. 数据类型size太大,浪费内存:这个数据类型用来表示浮点数,在x86 32位机器上竟然需要100多个字节。 (浮点数只需要4字节啊,IBM的大神们)

    2.   操作效率低下,来回和string相倒换,有时候完全没有必要。

    3. rescale后,原有的数值精度将永久地失去,其仅仅方便于在GUI上显示而已,作为科学计算已经不再合适。

    后来我只好用float/double来替换CDecfloat数据类型,发现碰到了NaN和Inf问题,而在CDecfloat中,NaN和Inf问题CDecfloat是自己记录了标志位实现的,即CDecfloat使用了额外的内存来表示NaN/inf属性。不自己封装类型的话,不可能给每个float/double来附加一个标志数据的。后来经过研究NaN及Inf的定义,及跟踪std对NaN/Inf的实现,总结出了如下的规律,在VS2008上验证通过。按照下列方法,我们可以简单的生成NaN/Inf及判断一个数据是不是NaN/Inf,不再需要平台提供的专有库函数。


    NaN及INFINITE数值

    通常INFINITE会简化表示为Inf。对于怎么判断一个浮点数是不是Nan或者inf,有现成的C++库函数可用:_isnan / _fpclass,但是对于怎么生成一个Nan浮点数,却没有现在的库函数可用,即使有也往往是第三方库封装生成的,或者有平台依赖的。现在探索如何生成一个Nan及Inf浮点数。

    1). NaN及INFINITE定义及使用规则
    浮点数除了可以表示正常的数值外,还可以表示非数据及无穷大,无穷小等情况。


    1.1. NaN及Inf数学运算
    这些数参与运算,有时会产生有意义的输出的:
    2 + Inf = Inf; //任意数和无穷大相加结果为无穷大
    4/ Inf = 0, //任意有限数除以无穷大结果为0
    atan(Inf) = &pi //对无穷大数取反正切,结果为π。(园周率,3.1415...)
    任意数和NaN运算,结果都是NaN。


    1.2. NaN及Inf逻辑运算
    NaN不大于,不小于,不等于任意数(包括其自身)。
    Inf在逻辑运算时,除了自身及NaN,正无穷大大于所有其它数,负无穷数小于所有其它数。


    1.3. 浮点数异常
    当产生任意NaN及INFINITE数值时,都会产生一个FP异常(FP Exceptions) 。IEEE 754定义了下列异常:
    无效运算(Invalid Operation) :如NaN及Inf参与的操作,负值求平方根,无效字符串转浮点数
    除0运算(Division by Zero)
    上溢出(Overflow) : 数据太大超出浮点数表示范围(不是无穷大)
    下溢出(Underflow) : 数据太小超出浮点数表示精度(不是0,也不是负无穷大)
    不精确(Inexact)    : 比较一个数表示对2取平方根的结果,或者表示1/3的结果,其小数位是无穷的,但是浮点数表示的小数位是有限的,从而导致不精确的异常。(注意:1.3333333 不等于 1/3)


    2). 如何产生NaN及INFINITE数
    如何产生一个NaN数呢?C库及C++库都没有提供。
    对于一个无效数值,通常可以用下列纯运算操作产生:
    对负1开方(sqrt (-1)) : 会产生无意义的数(Nan)
    除0 (1/0)  : 会产生正inf数.(正无穷大:Infinite)
    对0取对数(log(0)) : 会产生负inf数.(负无穷大:-Infinite)


    2.1. 纯数学运算产生
    产生NaN : 根据上面的定义,可以使用下列语句产生:
    float fNan = sqrt (-1.0f);
    double dNan = sqrt (-1.0);
    产生Inf  : 产生一个正无穷大的数
    double div = 0;
    return 1.0/div;
    注意:如果直接使用1.0/0.0在MS的编译器上会导致除0的编译错误。
    (其它编译器或许可以,但不提倡使用这样编译器依赖的代码)
    产生一个负无穷大的数
    double div = 0;
    return -1.0/div;
    或:
    double dInf = log(0.0);


    2.2. 使用STD命名空间提供的封装
    std命令空间中为我们提供了大量的数值属性封装。
    如:std::numeric_limits<float>::has_quiet_NaN();
    std::numeric_limits<float>::quiet_NaN();
    std::numeric_limits<float>::infinity();
    可以用来生成这些Nan及Inf数值。
    但有些情况下,比如特殊平台,std::numeric_limits<float>可能不存在,那么将无法使用这些函数。但是跟踪win平台下这些函数的内部实现,发现它们都是使用的一个全局常量。
    extern _CRTIMP2_PURE /* const */ _Dconst _Denorm, _Hugeval, _Inf,_Nan, _Snan;
    _Dconst的类型定义:
    typedef union
    { /* pun float types as integer array */
    unsigned short _Word[8];
    float _Float;
    double _Double;
    long double _Long_double;
    } _Dconst;


    如果如果要使用double的Nan值,可以:
    double dNan = ::_Nan._Double
    如果如果要使用double的Inf值,可以:
    double dInf = ::_Inf._Double
    注意:但是经过验证,要使用float的Nan值,使用::_Nan._Float所得结果是不正确的,其结果为0.0000000
    正确的获得float的Nan值的方法是使用_FNan._Float
    即在\VC\include\ymath.h中,定义有多组_Dconst常量,其分别对应不同类型的Nan值及inf值。
    对应double类型:extern _CRTIMP2_PURE /* const */ _Dconst _Denorm, _Hugeval, _Inf,_Nan, _Snan;
    对应double类型:extern _CRTIMP2_PURE /* const */ _Dconst _FDenorm, _FInf, _FNan, _FSnan;
    对应long double类型:extern _CRTIMP2_PURE /* const */ _Dconst _LDenorm, _LInf, _LNan, _LSnan;


    2.3. [本质方法]填充特定位
    所谓有Nan及Inf数值,都是在IEEE中定义的特定位满足指定要求的数值。
    那么最原始的方法就是通过操纵移位,还构造满足要求的数值。

    有VS的源文件\VC\crt\src\xvalues.c里面有具体的实现代码。


    3). 检测NaN及Inf
    3.1. 自身相等判断
    根据NaN及Inf逻辑运算中定义的规则,简单的办法(已在VS2008验证):
    检查一个值是否为NaN : NaN ≠ NaN 
    bool isNan(float fN)
    {
        return !(fN==fN);
    }
    如果dNan不是Nan,则dNan==dNan返回真,否则其返回假。

    检查一个值是否为Inf  : inf + 1 = Inf
    bool isInf(float fN)
    {
        return fN == (fN+1.0);
    }


    3.2. 使用库函数
    double dNan;
    bool isNan = _isnan(dNan);
    或者判断一个数是不是inf,则要复杂一点,要使用库函数_fpclass。
    原型:int    __cdecl _fpclass(_In_ double _X)
    注意:这个库函数在不同平台上,可能名称不一样。
    其返回值的意义:(不同平台上宏名称可能不一样,但意义大致相同)
    FP_NAN   //不是数值
    FP_INFINITE  //无穷数(无穷大或者无穷小)
    FP_ZERO //此数是零. (+0 或者 -0 ,IEEE 754)
    FP_SUBNORMAL //低于浮点数最小表示精度的非常小的数(但不是零),接近于0的数
    FP_NORMAL //除了以上几种情况的正常数据
    对这些返回值的组合会有下列的属性判断:
    isfinite <==>  (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE)
    isnormal <==>  (fpclassify (x) == FP_NORMAL)
    isnan <==>  (fpclassify (x) == FP_NAN)
    有些平台上还会提供一套对应的有符号属性,其一般用S表示。(比如MS平台,还指示是正无穷大/负无穷大)
    如NaN表示不带符号的NaN值,SNaN表示带符号的NaN值。
    展开全文
  • shell 函数返回值接收问题

    千次阅读 2018-11-26 09:48:22
    shell中函数的调用方式有两...shell中函数调用的第一种方式,是将标准输出传递给主程序的变量,而不是返回值! 所以请看以下程序: #!/bin/sh    check_user() {  n=`cat /etc/passwd | cut -d ":"...

    shell中函数的调用方式有两种,如下图:

    第一种方式,有点像C语言调用函数的风格,直接把函数的执行结果复制给变量!不过,这个赋值过程和C语言的函数赋值是不一样的!shell中函数调用的第一种方式,是将标准输出传递给主程序的变量,而不是返回值!

    所以请看以下程序:

    #!/bin/sh 
     
    check_user()
    {
        n=`cat /etc/passwd | cut -d ":" -f 1 | grep "^$1$" -Rn | cut -d ":" -f 1`
        echo $n  
        #这里是使用echo语句,将结果输出到标准输出上,所以在主程序中可以使用变量接收
     
    }
     
    userinfo()
    {
        userinfo=`head -$1 /etc/passwd | tail -1 | cut -d ":" -f 3,4`
        echo $userinfo
        
    }
     
    while true
    do
        read username
        m=`check_user $username`
        #使用变量接收函数check_user传递的值
     
        if [ -n "$m" ]
        then
            userinfo $m
            exit
        else
            echo "$username is not exit!"
        fi
    done


    而函数的第二种调用方式,是使用$?来接收上一程序的返回值状态,也就是return返回的值。

    return只能返回数字 下面程序中,if判断后,return 0 或者 1,在这里,我们就可以使用$?接收return的值,然后

    存储下来,继而进行下一步的判断!

    check_user()
    {
        n=`cat /etc/passwd | cut -d ":" -f 1 | grep -n "^$1$"| cut -d ":" -f 1`
        if [ -z "$n" ]
        then
            return 0
        else
            return 1
        fi
    }
     
    show_userinfo()
    {
        userinfo=`head -$n /etc/passwd | tail -1 | cut -d ":" -f 1,3,4`
        echo $userinfo
    }
     
    echo  "input username : "
    read username
     
    check_user $username
    num=$?
     
    if [ $num -eq 0 ]
    then
        echo "The user '$username' is not exist."
        exit
    else
        show_userinfo $n
    fi

    上面两个程序的执行结果是一样的,但是要注意着两种函数的不同调用方式,以及其返回给

    主调程序的到底是什么。明白了这一点,才能准确知道到底使用何种方式接收返回值!

    越界问题

    return返回数字有时候正确,有时候又不正确是为什么呢?

    我们知道return原本就是用于返回执行状态的,比如0,1.那么我们在返回500的时候,实际上是数据溢出了。

    根据测试,我们推断shell的内置return承接返回值用的是一个字节的大小,也就是8位,最多可以输出无符号0-255的整形,范围之外的数据全部溢出显示。因此在使用return的时候,务必留意数值大小。

    展开全文
  • 项目中,经常通过判断update的返回值判断数据是否更新成功,而事实上update是我们理解的那样吗?这里直接给我结论,update的原生返回值是通过更新检索条件,匹配的行数,而并不是影响的行数 ; 匹配的行数与...
  • Swift2.0语言教程之函数的返回值与函数类型
  • 注意:判断两个小数是否相等不能用==,因为计算机表示小数有误差,我们只能判断它们差的绝对值是否一个很小的范围内。 题外话:程序错误处理的三种方法:返回值、全局变量、异常。返回值好处是根据返回值判断错误...
  • 数值类型对象的建功能函数 absNumber 求Number的绝对值 coercex y 将x y转换为同一种数值类型 divmodx y 除法-取余运算的结合 pow 指数运算或将结果取余 round 浮点型的四舍五入运算和求精度 仅用于整型对
  • fork()的函数定义是init/main.c中(这一点我感到奇怪,因为大多数系统调用的接口函数都会单独封装成一个.c文件,然后里面进行嵌入汇编展开执行int 0x80中断从而执行相应的系统调用,如/lib/close.c中: ...
  • Java数值类型提升机制

    千次阅读 2017-07-31 02:16:13
    Java语法特性隐藏了代码中的每个角落,...本文就将JLS中关于数值提升的机制译述出来,便于更深刻地理解代码后面的东西。 问题 以下几段代码为什么是这样的运行结果: Object k = true ? null : 1; System...
  • TensorFlow数值基础

    千次阅读 2021-03-22 19:18:34
    数据类型,包含数值类型,字符串类型和布尔类型。 数值类型 数值类型是TensorFlow的主要数据载体,根据维度数来区分可分为: 标量:单个的实数,维度数为0,shape为[]。 向量:n个实数的有有序集合,通过中括号包裹...
  • 数值概率算法

    千次阅读 2018-01-09 10:26:47
    rand和srand解决设计问题时,有时会用到概率算法。概率算法允许执行过程中随机的选择下一步的计算步骤。又是可使算法大大降低复杂度,提高算法效率,但有时也可能得不到问题的全部答案。基本概念概率算法大致分为...
  • DB2数值函数简介及使用

    千次阅读 2016-01-12 16:20:03
    DB2数值函数简介及使用学习一种数据库,最开始我们都是从其内部函数开始学习的,这些内部函 数对于我们编写SQL有很大的帮助; 本文虽然介绍的不全,但能够起到一个引导作用,具体信息以官网为准。 1、取绝对值的...
  • 注:N表示数字型,C表示字符型,D表示日期型,[]表示中参数可被忽略,fmt表示格式。 单值函数查询中返回单个值,可被应用到select,where子句,start with以及connect by 子句和having子句。 (一).数值型函数...
  • 此时,就没有办法表中判断原始参数究竟是不是以nil结尾的 可变长参数的遍历方式2(table.pack()函数) Lua 5.2中引入了table.pack()函数,该函数像表达式{...}一样保存了所有参数,然后将其放在一个表中返回,...
  • 四、数值计算1. 取整函数: round 语法: round(double a) 返回值: BIGINT 说明: 返回double类型的整数值部分(遵循四舍五入) 举例: hive> select round(3.1415926) from lxw_dual; 3 hive> select round...
  • oracle中最重要的数值型为number。尽管实际开发中,可以利用integer来定义列或者变量,但oracle仍然推荐用户统一使用number类型。接下来,本文将说明: 数值型简介 数值型函数
  • java面试题中的判断

    千次阅读 2019-11-21 15:11:25
    1、Java语言有三种技术平台,分别是JavaSE、JavaME、JavaEE(T) 2、Java是一门高级计算机语言。(T) 3、Java语言具体跨平台的特性(T) 4、JDK工具中自带了一个JRE工具(T) ...8、任意命令行窗口中...
  • 而应该计算两个小数的差,当这个差值某个很小的范围内时(如上述0.0000001,这个值应根据实际情况的误差限确定),就认为二者相等。 计算base的absExponent次幂即函数 PowerWithUnsigenedExponent()中,利用如下...
  • [判断物体是否主角前方60°、距离小于10的范围内] 解决思路:   判断是否前方要运用到点积,公式为a•b=|a||b|cosθ,所以只需要判断cosθ(物体与主角正前方的夹角为θ)与cos30°的大小关系。余弦函数0~...
  • 直接得出: 根据数组建立平衡二叉搜索树 java整体打印二叉树 判断平衡二叉树 判断完全二叉树 判断二叉搜索树 二叉搜索树实现 堆的简单实现 堆应用例题三连 一个数据流中,随时可以取得中位数。 金条 项目最大收益...
  • 习题3-5 三角形判断

    千次阅读 2018-09-12 10:00:35
    输入一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x​1​​、y​1​​、x​2​​、y​2​​、x​3​​、y​3​​。 输出格式: 若这3个点不能构成三角形,则一行中输出“Impossible”;若可以,...
  • 如有不当之处,请各位大拿多多指点,此谢过。 一、概述 1、相关概念 1.1 回归  “回归”一词的来历: 今天我们知道的 回归是由达尔文(Charles Darwin)的表弟Francis Galton发明的。Galton于1877年完成了第...
  • 首先,Maple和Mathematica是以符号计算著称,但是近年来Maple和Mathematica在数值计算上也有长足的发展,总体来说Matlab>Mathematica>Maple,差距缩小; 就符号计算本身来说,如果做过测试的话,Maple>Mathematica>...
  • python3内置函数详解

    千次阅读 2016-08-29 14:38:34
    dir() 不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表。 divmod() 分别取商和余数 enumerate() 返回一个可以枚举的对象,该对象的next()方法将返回一个元组。 ...
  • Python判断 NoneType数据类型

    万次阅读 2019-04-22 22:51:57
    用OpenCV读取图片时候图片破损了会报错,说Nonetype类型。 所以,我就想,条件过滤的时候用is not 或者 != 就可以过滤了,比如这样尝试的时候: type(answers[0].find_all("table")[0].string) is '''NoneType'...
  • 题目 分析 自以为题目简单的解法 全面但不够高效的解法 全面又高效的解法 测试用例代码 本题考点 题目 实现函数 double Power...要求实现特定库函数(特别是处理数值和字符串的函数)的功能,是一类常见的面试题。
  • 超硬核!数据结构学霸笔记,考试面试吹牛就靠它

    万次阅读 多人点赞 2021-03-26 11:11:21
    第一次执行i=1和判断i以后执行n次判断和i++。所以该语句执行了n+1次。他的控制下,循环体执行了n次。 2)四个并列程序段:分别为O(N),O(N^2),O(N^3),O(N*logN),整个程序时间复杂度为O(N^3),因为随着N的增长,其它...
  • 你知道怎么判断NB-IOT的网络信号吗

    千次阅读 2021-03-14 09:46:54
    评判NB-IOT网络信号质量,主要以SNR(信噪比)、SINR(信号与干扰加噪声比)、RSRQ(信号接收质量)、RSRP...举例:通过AT指令“AT+CSQ”的返回值得到CSQ值为31 使用AT指令“AT+CESQ”可查询RSRQ(信号接收质量)、R
  • 「 2个元素 」,然后 「比较」这「 2个元素 」的值,使其自己的原地数组有序,然后两个 「 2个元素 」 的数组归并变成 「 4个元素 」 的 「升序」数组,再将两个「 4个元素 」 的数组归并变成 「 8个元素 」 的 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,389
精华内容 24,555
关键字:

判断数值在范围内返回值