精华内容
下载资源
问答
  • 1、写函数,接受n个数字,求这些参数数字的和。(动态传参)def sum(*args):val=0for i inargs:val= i+valreturn val2、读代码,回答:代码中,打印出来的值a, b, c分别是什么?为什么?a = 10b = 20def test(a, b):...

    1、写函数,接受n个数字,求这些参数数字的和。(动态传参)

    def sum(*args):

    val=0for i inargs:

    val= i+valreturn val

    2、读代码,回答:代码中,打印出来的值a, b, c分别是什么?为什么?

    a = 10

    b = 20

    def test(a, b):

    print(a, b)

    c = test(b,a)

    print(c)

    a = 20, b = 10 , c =None

    因为函数中没有return, 因此返回的是None

    3、读代码,回答:代码中,打印出来的值a, b, c分别是什么?为什么?

    a = 10

    b = 20

    def test(a, b):

    a = 3

    b = 5

    print(a, b) #a =3,b =5

    c = test(b,a)

    print(c) #c=None

    print(a, b) #a = 10 , b = 20

    a = 10 b = 20, c =None

    4、写函数, 传入函数中多个实参(均为可迭代对象如字符串,列表,元组,集合等)

    将每个实参的每个元素依次添加到函数的动态传参args里面

    eg:传入函数两个参数【1,2,3】(22,33)最终args为(1,2,3,22,33)

    1 list = [1,2,3]2 tuple = (22,33)3 def test(*args):4 print(args)5 test(*list,*tuple)

    5、写函数,传入函数中多个实参,将每个实参的键值对依次添加到函数的动态参数kwargs里面。

    1 dic = {"张三":25,"李四":24,"王五":23}2 dic1 = {"张三1":215,"李四1":124,"王五1":213}3 def test(**kwargs):4 print(kwargs)5 test(**dic,**dic1)

    6、下面代码成立么?如果不成立为什么报错?怎么解决?

    6.1

    a = 2

    def wrapper():

    print(a)

    wrapper()

    ##成立

    6.2

    a = 2

    def wrapper():

    a += 1

    print(a)

    wrapper()

    ##不成立,因为函数中的a是全局变量,不能直接赋值,需要在函数中输入global a 代码

    6.3

    def wrapper():

    a = 1

    def inner():

    print(a)

    inner()

    wrapper()

    ##成立,看没问题,改的话就会报错

    6.4

    def wrapper():

    a = 1

    def inner():

    a += 1

    print(a)

    inner()

    wrapper()

    ##报错,因为直接在函数内的函数修改上外面函数的变量,因此在内部函数中添加 nonlocal a 代码即可

    7、写函数,接受两个数字参数,将较小的数字返回

    1 defmy_min(a, b):2 return a if a > b elseb3 mmin = my_min(103,203)4 print(mmin)

    8、接受一个参数(必须是可迭代对象),将每个元素以“_”相连接,形成新的字符串,并返回

    eG:传入的可迭代对象为[1,"python", "sun wu kong "]返回的结果为'1_python_sun wu kong '

    def func(it):

    result= ""

    for el init:

    result+= str(el) + "_"

    return result[:-1]

    print(func([1,"asd","23"]))

    9、写函数,传入n个数,返回字典{‘max’:最大值,'min':最小值}

    def func(*n):

    return {"最大值":max(n),"最小值":min(n)}

    10、写函数,传入一个参数n,返回n的阶乘

    defcal(n):if n == 1:returnnreturn n * cal(n-1)print(cal(3))

    11、写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

    defpuke():

    hua= ["红心","梅花","黑桃","方块"]

    dian= ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]

    result=[]for huase inhua:for dianshu indian:

    result.append((huase,dianshu))return result

    12、有如下函数:

    def wrapper():

    def inner():

    print(666)

    inner()

    wrapper()

    用两种以上的方式,执行inner()函数

    ## 第一种

    defwrapper():definner():print(666)

    inner()

    wrapper()## 第二种

    defwrapper():definner():print(666)returninner

    fn=wrapper()

    fn()

    13、相关面试题

    1、有函数定义如下:

    def calc(a, b, c, d=1, e=2):

    return (a+b)*(c-d)+e

    请分别写出下列标号代码的输出结果,如果出错请写出Error。

    print(calc(1,2,3,4,5))## (1+2)*(3-4)+5

    print(calc(1,2))  ## Error

    print(calc(e=4,c=5,a=2,b=3)) ## (2+3)*(5-1)+4

    print(calc(1,2,3)) ## (1+2)*(3-1)+2

    print(calc(1,2,3,e=4)) ## (1+2)*(3-1)+4

    print(calc(1,2,3,d=5,4)) ##Error

    2、(此题有坑)下面代码打印的结果分别是 ##

    def extendList(val,list=[]):## 默认值在内存中只会产生一份,(地址)

    list.append(val)

    return list

    list1 = extendList(10)   ## 默认值地址列表

    list2 = extendList(123,[]) ## 产生新的地址列表

    list3 = extendList("a")   ## 默认值地址列表,既 list1 和 list 3 相同

    print("list1=%s"%list1)  ## list1 = ["10","a"]

    print("list2=%s"%list2) ## list2 = ["123"]

    print("list3=%s"%list3) ## list3 = ["10","a"]

    测试 ## print(id(list1))

    ## print(id(list3))

    14、写代码完成99乘法表(升级题)

    for i in range(1,10):for j in range(1,i+1):print("%s*%s=%s"%(i,j,i*j),end="")print() ##print()默认值end = "\n"

    展开全文
  • fill 函数

    2013-08-15 10:12:08
    fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个数,然后输入一些操作:start,end,...
    fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。

    例题:给你n个数,然后输入一些操作:start,end,paint。表示从start到end都赋予paint的值,并输出每一次操作后的数组状态。
    代码:
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    void print(int &elem){cout<<elem<<" ";}
    int main()
    {
        vector <int> V;
        int n,startpos,endpos,paint;
        cin>>n;
        V.resize(n);
        while(cin>>startpos>>endpos>>paint)
        {
                fill(V.begin()+startpos-1,V.begin()+endpos,paint);
            for_each(V.begin(),V.end(),print);
            cout<<endl;
        }
        return 0;
    }
    fill_n函数的作用是:给你一个起始点,然后再给你一个数值count和val。把从起始点开始依次赋予count个元素val的值。
    注意: 不能在没有元素的空容器上调用fill_n函数
    例题:给你n个数,然后输入一些操作:start,count,paint。表示从start开始连续填充count个数字,paint为填充的数值。
    代码:
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    void print(int &elem){cout<<elem<<" ";}
    int main()
    {
        vector <int> V;
        int n,start,count,paint;
        cin>>n;
        V.resize(n);
        while(cin>>start>>count>>paint)
        {
            fill_n(V.begin()+start-1,count,paint);
            for_each(V.begin(),V.end(),print);
            cout<<endl;
        }
        return 0;
    }
    再发一下关于fill_n函数的例子:
    // fill_n example
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;

    int main () {
      vector<int> myvector (8,10);        // myvector: 10 10 10 10 10 10 10 10

      fill_n (myvector.begin(),4,20);     // myvector: 20 20 20 20 10 10 10 10
      fill_n (myvector.begin()+3,3,33);   // myvector: 20 20 20 33 33 33 10 10

      cout << "myvector contains:";
      for (vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
        cout << " " << *it;

      cout << endl;
     
      return 0;
    }
    展开全文
  • VB中求Val("&H ffff")的返回值

    千次阅读 热门讨论 2014-12-23 10:18:30
     VB中的Val函数含义是返回包含于字符串内的数字,字符串是一个适当类型的数值,在它不能识别为数字的第一个字符上,停止读入字符串,那些被认为是数值的一部分的符号和字符,例如美元号与逗号,都不能被识别。...

        这是徒弟问的百例上的问题,在师哥师姐的帮助下,终于拿下了

        例题已经给出了答案,是-1,可是为什么

        首先回顾一下知识,

        VB中的Val函数含义是返回包含于字符串内的数字,字符串是一个适当类型的数值,在它不能识别为数字的第一个字符上,停止读入字符串,那些被认为是数值的一部分的符号和字符,例如美元号与逗号,都不能被识别。但是函数可以识别进位制符号:&O (八进制),&H(十六进制)。空白、制表符和换行符都从参数中被去掉。

       那么也就是求16进制的ffff用val函数返回的值,而且返回值都是10进制的,是给人看的。

        后来知道val返回值是int类型的,用两个字节表示,一个字节8位,所以总共能表示的数为2的16次方=65536个,表示范围为-32768---32767,并不是0----65535,例题中给出的16进制的ffff转换成10进制为65535,所以就有了下面的对应关系,这是规定

    16进制的0000----7fff对应十进制的0  ----  32767  (一共32768个数)

    16进制的8000----ffff对应十进制的-32768  ----  -1  (一共32768个数)

     

       下面是实验截图:





















        整这件事花费的时间不短,权当扩充知识库吧,徒弟走我们曾经走过的路,发现了问题,这是非常好的,师傅补漏洞,徒弟长知识。

        come on!


    展开全文
  • 动态内存管理例题

    2020-11-26 17:21:27
    文章目录为什么存在动态内存分配一、动态内存函数的介绍malloc和free常见的动态内存错误内存泄漏callocrealloc二、内存区域的划分三、四个经典笔试题 为什么存在动态内存分配 我们已经掌握的内存开辟方式有: int ...
     
    


    为什么存在动态内存分配

    我们已经掌握的内存开辟方式有:

    	int val = 20;
    	char arr[10] = {0};
    

    但是上述的开辟空间方式有两个特点:

    1.空间开辟大小是固定的。
    2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。

    但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就只能试试动态内存开辟了。


    一、动态内存函数的介绍

    malloc和free

    C语言提供了一个动态内存开辟的函数:

    	void* malloc (size_t size);
    

    这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。

    在这里插入图片描述

    如果开辟成功,则返回一个指向开辟好空间的指针。
    如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。(这一点在面试中非常重要)
    返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。
    如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。

    C语言提供了另外一个函数free,专门是用来做动态内存的释放和回收的,函数原型如下:

    	void free (void* ptr);
    

    free函数用来释放动态开辟的内存。

    如果参数 ptr 指向的空间不是动态开辟的,那free函数的行为是未定义的。
    如果参数 ptr 是NULL指针,则函数什么事都不做。

    常见的动态内存错误

    对动态开辟的空间越界访问

    void test()
    {
    	 int i = 0;
    	 int *p = (int *)malloc(10*sizeof(int));
    	 if(NULL == p)
    	 {
    	 	exit(EXIT_FAILURE);
    	 }
    	 for(i=0; i<=10; i++)
    	 {
    	 	*(p+i) = i;//当i是10的时候越界访问
    	 }
    	 free(p);
    }
    

    对非动态开辟内存使用free释放

    void test()
    {
    	 int a = 10;
    	 int *p = &a;
    	 free(p);
    }
    

    使用free释放一块动态开辟内存的一部分。原因是p++之后,已经不指向这段内存空间的首地址了,释放了一部分动态内存。

    	char* p = (char*)malloc(10);
    	p++;
    	free(p);
    

    并且,有些编译器(例如GCC)使用malloc的时候,会在malloc返回的首地址的前面若干个字节中存放该内存的长度。若p++,则读取不到正确的长度信息,导致未定义行为。
    在这里插入图片描述

    对同一块动态内存多次释放

    void test()
    {
    	 int *p = (int *)malloc(100);
    	 free(p);
    	 free(p);//重复释放
    }
    

    内存泄漏

    如果malloc了之后,没有调用free释放会怎么样呢?

    内存泄漏”。实际开发中,尤其是服务器开发里,特别害怕内存泄漏。典型的原因就是服务器往往是7*24持续运行,运行过程中需要处理很多的请求,每次请求处理时如果出现内存泄漏,会积少成多。内存泄漏到一定程度时,会导致操作系统没有足够的内存可以分配,从而导致程序崩溃。

    内存泄漏的问题不怕快,就怕慢,泄露慢就很难定位。因此,常使用“例行重启”来解决这个问题。

    C++中引入了“智能指针”,但是不够智能,智能一定程度地缓解内存泄漏问题,不能彻底解决。

    相比之下,Java/Python/JS/Go…里面大多都集成了垃圾回收机制(GC),能够更好地解决内存泄漏问题。但是,GC中也存在一个致命的问题 STW “stop the world”。尽管如此,Java中对于STW问题其实是进行了一系列的探索和优化的,可以把STW的时间降低到 < 1ms。

    下面我们来看一个典型的内存泄漏的例子:

    	void* p = malloc(10);
    	p = malloc(10);
    	free(p);
    

    第一次调用malloc后,指针p中存放了这段内存空间的首地址;第二次调用malloc,开辟了一段新的内存空间,它的首地址存入p,覆盖了第一段空间的首地址。旧地址“丢了”,也就无法释放。

    calloc

    C语言还提供了一个函数叫calloc,与malloc的区别在于calloc会在返回地址之前将申请空间的每个字节初始化为零。原型如下:

    	void* calloc (size_t num, size_t size);
    

    realloc

    realloc函数的出现让动态内存管理更加灵活。它可以做到对动态开辟的内存的大小进行调整。函数原型如下:

    	void* realloc (void* ptr, size_t size);
    

    ptr是要调整的内存地址
    size是调整之后的新大小
    返回值为调整之后的内存起始位置

    如果realloc的时候发现内存的空隙不足以容纳下新增的数
    据,此时就会触发搬运操作,在内存中重新找一个更大的,连续的空间,然后把原来的内存的数据给自动的拷贝过去
    原内存空间就被自动释放了。
    在这里插入图片描述
    整体搬运:
    在这里插入图片描述

    二、内存区域的划分

    一个计算机(操作系统)上,同一时刻运行着很多个程序/进程。操作系统会给每个进程划分一定的内存空间。每个进程的内存空间,又会分成几个大的区域。
    按照地址高低可以这样划分:

    低地址

    代码段:存放二进制指令

    数据段:存放全局变量和static修饰的变量

    :malloc等操作动态申请的内存

    :存放局部变量和函数之间的调用关系

    高地址

    对于递归函数来说,如果没有递归结束条件,就会出现栈溢出(stack overflow)的情况。

    堆有多大?
    内存有多大,堆就有多大(一个程序的内存空间绝大部分都给了堆)。例如256G内存,堆至少能占250G。

    栈的空间比较小,堆的空间比较大。
    栈上申请释放内存速度极快(本质就是一条机器指令)。堆上申请释放内存很慢(涉及到操作系统内核中的一些工作)

    在实际开发中,
    如果某个内存较小,并且需要频繁申请释放,使用栈。如果某个内存较大,并且不需要频繁申请释放,使用堆。
    如果某个内存较小,也不需要频繁申请释放,都行。
    如果某个内存较大,也需要频繁申请释放,只能使用堆。

    三、四个经典笔试题

    void GetMemory(char *p)
    {
    	 p = (char *)malloc(100);
    }
    void Test(void)
    {
    	 char *str = NULL;
    	 GetMemory(str);
    	 strcpy(str, "hello world");
    	 printf(str);
    }
    

    解答:
    由于p是局部变量,是实参的一份拷贝,因此,对这份拷贝所作的任何操作都无法影响实参。所以,经过GetMemory之后,str仍然是NULL,试图将一个字符串拷贝到空指针里必然会导致内存访问越界。
    此外,还有以下问题:
    (1)没有free,内存泄漏。
    (2)malloc返回结果没有判空。
    (3)GetMemory函数的参数没有判空。

    char *GetMemory(void)
    {
    	char p[] = "hello world";
     	return p;
    }
    void Test(void)
    {
     	char *str = NULL;
     	str = GetMemory();
     	printf(str);
    }
    

    解答:
    显而易见,p是局部变量,函数执行完之后,p这个变量的内存就被释放了,试图打印的话就是未定义行为。

    void GetMemory(char **p, int num)
    {
     	*p = (char *)malloc(num);
    }
    void Test(void)
    {
    	 char *str = NULL;
    	 GetMemory(&str, 100);
    	 strcpy(str, "hello");
    	 printf(str);
    }
    

    解答:
    有了第1题的经验,我们可以使用二级指针实现开辟空间。由于p是局部变量,是实参的一份拷贝,所以任何对其的直接操作都是没有办法传出函数的范围的。但是对其进行解引用操作可以将变化传出去。因此这份代码是可以成功开辟空间并且打印出hello的。然而,内存泄漏和没有判空的问题依然存在。

    void Test(void)
    {
    	 char *str = (char *) malloc(100);
    	 strcpy(str, "hello");
    	 free(str);
    	 if(str != NULL)
    	 {
    	 	strcpy(str, "world");
    	 	printf(str);
    	 }
    }
    

    解答:
    free操作不会把指针中存放的地址变为NULL,满足判断条件,因此可以打印出world。

    展开全文
  • 第3章 函数(1)

    2018-12-11 12:36:16
    函数函数定义的语法形式例题x^n次方数制转换编写程序求$\pi$的值回文sinx 函数定义的语法形式 例题 x^n次方 //计算x的n次方 #include &amp;amp;lt;iostream&amp;amp;gt; using namespace std; double pow...
  • fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个数,然后输入一些操作:start,end,paint...
  • C++ fill和fill_n函数用法介绍和比较 ...fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个...
  • fill和fill_n函数的应用

    2015-10-27 16:58:25
    fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个数,然后输入一些操作:start,end,...
  • fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个数,然后输入一些操作:start,end,paint...
  • 有关时间函数的用法

    2019-07-25 21:53:56
    例题 在传递参数时,实参没有就使用默认的,有就用指定的 def extendlist(val,list=[]): list.append(val) return lis list1=extendlist(10) list2=extendlist(123,[]) list3=extendlist(‘a’) print(list1) print...
  • 最优化之DFP算法考试题代码:Dfp.m文件function[x,val,k]=dfp(fun,gfun,x0)%功能:用DFP算法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数及其梯度%输出:x,val分别是近似最优点和最优值,k是迭代...
  • C++学习 fill和fill_n...fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个数,然后输入一些操
  • 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 /* * class ListNode{ * int val; * ListNode next; * * public ListNode(int value) * { * this.val=value; * } * } */ ...
  • 1、Driver program 包含程序的main()方法以及RDDs的定义和操作,...写过spark程序我们就会知道每一个RDDs的函数实现前我们都会写val sc=new SparkContext(new SparkConf)这句话,这里的sparkcontext是一个对象,Dr...
  • 最优化之DFP算法考试题代码:Dfp.m文件function[x,val,k]=dfp(fun,gfun,x0)%功能:用DFP算法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数及其梯度%输出:x,val分别是近似最优点和最优值,k是迭代...
  • fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。 例题:给你n个数,然后输入一些操作:start,end,...
  • 如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.mate包中的两个很有用的类:BigInteger与BigDecimal。...基本函数: 1.java.math.BigInteger.valueOf(long val) 将参数转换为制定的类型...
  • 题目如下:image.png思路是合并为一个list,在通过匿名函数进行排序,参考代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass ...
  • STL函数remove的用法: Transforms the range [first,last) into a range with all the elements that compare equal to val removed, and returns an iterator to the new end of that range.#include #include #...
  • 知识背景与相应介绍 先介绍一下单链表 单链表可以在任意位置插入,但如果想在 O(1)的复杂度内实现,就只能在某一个点的后面一个点插入。...这种实现方式的 特点:每次创建一个新的链表的时候就要调用一下new函数
  • 使用fill_n算法

    千次阅读 2017-07-13 19:50:06
    今天使用这个算法来给一个数组赋值,... 注意: 不能在没有元素的空容器上调用fill_n函数 例题:给你n个数,然后输入一些操作:start,count,paint。表示从start开始连续填充count个数字,paint为填充的数值。// Co
  • 第 3 课 算法的程序实现 一 教学设计思想 本节课是程序设计上机的第一...择这个加法程序第一是程序简单学生可以撇开复杂问题直接了解顺序结构程 序设计的过程和步骤第二可以用借这个例题来更直观地掌握 val) 函数的用法
  • 线段树

    2020-12-15 22:35:27
    update(i, val) 函数可以通过将下标为i的数值更新为val,从而对数列进行修改。 基本思路:区域和很典型线段树的应用,利用线段树可以在在o(lg(n))的时间复杂度内完成 线段树的构建,大小是2*n,下标从1开始,是一...
  • 本节课是程序设计上机的第一节课本节课的目的是让学生了解程序设计的上机规范掌握顺序结构程序设计的基本步骤因此本节课采取先介绍程序设计软件...借这个例题来更直观地掌握val)函数的用法本节课设计讲解演示加上学生
  • 二叉树算法

    2020-11-12 17:28:59
    节点类的属性包括当前节点的值、左子节点、右子节点(子节点的类型也是二叉树结点类)、构造函数,代码如下: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; ...
  • 线性回归和逻辑回归,基本概念可以去参照前一篇文章。这一篇主要以例题形式。代码解释与实现。...from sklearn.model_selection import cross_val_predict #做交叉验证预测的函数导入 from sklearn impo...
  • Java 刷题问题总结

    2019-02-11 23:22:05
    例题:HDU-2022海选女主角 C++ 中的结构体,在Java 中需要用类来表示。 类的定义: //类的定义 public static class Pos{ int x, y, val, num; } 单个 类 在 main 函数中的使用: Pos p = new Pos();//一定...
  • 不同于正常的编程方式,递归编程要求函数的自身调用,这就引发了一种“错觉”,想实现一个功能A,却要用功能A已经实现后去实现该功能A。这个部分可以被称为“递归的点”,也是递归问题的难点。 看下面这个例题,...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

val函数例题