精华内容
下载资源
问答
  • :获得用户输入的一个字符串,格式如下:M OP N ,其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬...

    测验1:Python基本语法元素

    知识点概要:

    • 普遍认为Python语言诞生于1991
    • Python语言中的缩进在程序中长度统一且强制使用,只要统一即可,不一定是4个空格(尽管这是惯例)
    • IPO模型指:Input Process Output
    • 字符串的正向递增和反向递减序号体系:正向是从左到右,0到n-1,反向是从右到左,-1到-n,举例
    str = "csdn" 
    #str[0]就表示字符串c, str[-1]表示"n"
    
    • Python的合法命名规则:命名包含字母,数字,下划线,但是首字符不能是数字
    • Python中获得用户输入的方式为:input()
    • Python中的保留字:type不是,是内置函数,def elif import 都是保留字
    • Python的数据类型有整数、列表、字符串等,但是不包括实数,实数是数学概念,在Python中对应着浮点数
    • 保留字if-elif-else用于表示分支结构,in用来进行成员判断
    • print()格式化输出,控制浮点数的小数点后两位输出应为:print("{:.2f}".format(XX)) :.2f哪一个都不能少

    编程测试:

    • Hello World 的条件输出:获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      如果输入值是0,直接输出"Hello World"‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      如果输入值小于0,以垂直方式输出"Hello World"
    # eval()函数可以将默认输入的字符串去掉双引号并进行表达式运算,如输入500+20,默认
    #得到的输入为一个字符串“500+20”,但是使用eval()函数我们得到的是一个整型数字:520
    Number = eval(input())
    if Number == 0:
        print("Hello World")
    elif Number > 0:
        print("He\nll\no \nWo\nrl\nd")
    else:
        for c in "Hello World":
            print(c)
    
    • 数值运算:获得用户输入的一个字符串,格式如下:M OP N ,其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬根据OP,输出M OP N的运算结果,统一保存小数点后2位。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
    print("{:.2f}".format(eval(input())))
    

    测验2:Python基本图形绘制

    知识点概要:

    • 正确引用turtle库的方式:
    import turtle
    #t是别名,可以更换其他名称
    import turtle as t 
    from turtle import setup
    from turtle import *
    

    import setup from turtle是不正确的

    • turtle库是一个直观有趣的图形绘制函数库,最早成功应用于LOGO编程语言,turtle绘图体系以水平右侧为绝对方位的0度,turtle坐标系的原点****默认在屏幕正中间
    • turtle.circle(-90,90)表示绘制一个半径为90像素的弧形,圆心在小海龟当前行进的右侧
    # circle(x,y)表示以x长度为半径,y为角度,
    #当前方向左侧x处为圆心画圆,其中x,y都可以是负数,相应取反
    #当前方向是水平向右的,对应直角坐标系中的x轴正方向
    #x为正,则圆心在y轴正方向上,y为正,逆时针画圆,圆弧角度为y
    #x为负则相反,圆心在y轴负方向上,y为正,顺时针画圆,圆弧角度为y
    
    • turtle.seth(to_angle)函数的作用是设置小海龟当前行进方向为to_angle,to_angle是角度的整数值
    • turtle.fd(distance)函数的作用是向小海龟当前行进方向前进distance距离
    • turtle.pensize(size)函数的作用是改变画笔的宽度为size像素
    • turtle**.circle**()函数不能绘制椭圆形
    • turtle.circle(x,y)函数绘制半圆,第二个参数y是180的奇数倍
    • turtle.penup()的别名有turtle.pu(),turtle.up()
    • turtle.colormode()的作用是设置画笔RGB颜色的表示模式
    • turtle.width()和turtle.pensize()都可以用来设置画笔尺寸
    • turtle.pendown()只是放下画笔,并不绘制任何内容
    • 改变turtle画笔的运行方向有left()、right()和seth()函数,bk()只能后退,但是不改变方向
    • turtle.done()用来停止画笔绘制,但绘图窗体不关闭,建议在每个turtle绘图最后增加turtle.done()
    • 循环相关保留字是:for…in和while,def用于定义函数

    编程测试:

    • turtle八边形绘制:使用turtle库,绘制一个八边形
    import turtle as t
    t.pensize(2)
    for i in range(8):
        t.fd(100)
        t.left(45)
    
    • turtle八角图形绘制:使用turtle库,绘制一个八角图形
    import turtle as t
    t.pensize(2)
    for i in range(8):
        t.fd(150)
        t.left(135)
    

    测验3:基本数据类型

    知识点概要:

    • pow(x,0.5)能够计算x的平方根,计算负数的平方根将产生复数
    • 字符串.strip()方法的功能是去掉字符串两侧指定的字符
    • 字符串.split()方法的功能是按照指定字符分隔字符串为数组
    • 字符串.repalce()方法的功能是替换字符串中特定字符
    • +操作符用来连接两个字符串序列
    • 字符串是一个连续的字符序列,使用\n可以实现打印字符信息的换行
    • val = pow(2,1000)
      #返回val结果的长度值要使用 len(str(val)),因为整型没有len()方法,要通过str()函数
      #将数字类型转换为字符串
    • 正确引用time库的方式如下:
    import time
    from time import strftime
    from time import *
    
    • Python语言的整数类型表示十进制(一般表示)二进制(0b或0B开头)八进制(0o或0O开头)十六进制(0x或0X开头)
    • %运算符的意思是取余数
    • 字符串切片操作:s[N:M],从N到M,但是不包括M
    name="Python语言程序设计课程"
    print(name[0],name[2:-2],name[-1])
    #输出结果为:P thon语言程序设计 程
    
    • print("{0:3}".format('PYTHON'))代码执行的结果是PYTHON,{0:3}表示输出的宽度是3,但是如果字符串长度超过3就以字符串长度显示

    编程测试:

    • 平方根格式化:获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充,‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬如果结果超过30个字符,则以结果宽度为准
    a = eval(input())
    print("{:+>30.3f}".format(a**0.5)) 
    # +是填充字符 >是右对齐 30是宽度 .3f是保留小数点后3位
    #若平凡根后是一个复数,复数的实部和虚部都是浮点数,.3f可以将实部和虚部分别取三位小数
    
    • 字符串分段组合:获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出
    InputStr = input()
    strs = InputStr.split('-')
    print(strs[0]+'+'+strs[-1])
    print("{}+{}".format(strs[0], strs[-1]))
    #s.split(k)以k为标记分割s,产生一个列表
    #通过该题目,掌握split()方法的使用,注意:k可以是单字符,也可以是字符串
    

    测验4:程序的控制结构

    知识点概要:

    • for…in…中in的后面需要的是一个迭代类型(组合类型),{1;2;3;4;5}不是Python的有效数据类型
    • range(x,y)
    for i in range(0,2):
    	print(i)
    #输出结果为:0 1
    
    • 程序的三种基本结构:顺序结构,循环结构和分支结构
    • 循环是程序根据条件判断结果向后反复执行的一种运行方式,是一种程序的基本控制结构,条件循环和遍历循环结构都是基本的循环结构,死循环能够用于测试性能,形式上的死循环可以用break来退出,例如
    x = 10
    while True:
    	x = x -1
    	if x == 1:
    		break
    
    • p = -p #表示给p赋值为它的负数,Python中的=是赋值符号
    • 缩进表达层次关系,同时用来判断当前Python语句在分支结构
    • continue结束当次循环,但是不跳出循环
    • random库中用于生产随机小数的函数是random(),而randint()/getrandbits()/randrange()都产生随机整数
    • 程序错误是一个大的概念,不仅指代码运行错误,更代表功能逻辑错误。使用异常处理try-excepy,可以对程序的异常进行捕捉和处理,程序运行可能不会出错,但逻辑上可能会出错

    编程测试:

    • 四位玫瑰数:四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬
      例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‮‬‫
      请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行
    #个人思路:求四位数的各个位数abcd
    for i in range(1000,10000):
        a = i%10
        b = (i//10)%10
        c = (i//100)%10
        d = (i//1000)%10
        if a**4 + b**4 + c**4 + d**4 == i:
            print(i)
    #参考答案:字符串+eval()
    s = ""
    for i in range(1000, 10000):
        t = str(i)
        if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :
            print(i)
    
    • 100以内素数之和:求100以内所有素数之和并输出‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      素数指从大于1,且仅能被1和自己整除的整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬,提示:可以逐一判断100以内每个数是否为素数,然后求和
    sum = 0
    for i in range(2,100):
        isFlag = 1 #判断是否为素数
        for j in range(2,i): #遍历2-i-1,看是否能被i整除
            if i%j == 0: #被整除说明不是素数
                isFlag = 0
                break
        if isFlag == 1:
            sum += i
    print(sum)
    #参考答案:将判断是否为素数封装为一个函数,倾向于这种解题思路
    def is_prime(n):
        for i in range(2,n):
            if n%i == 0:
                return False
        return True
    sum = 0
    for i in range(2,100):
        if is_prime(i):
            sum += i
    print(sum)
    

    测验5:函数和代码复用

    知识点概要:

    • 函数作用:增强代码可读性、降低编程复杂度、复用代码,函数不能直接提高代码的执行速度
    • 全局变量与局部变量:函数的参数一般为局部变量,函数内使用global s 表示变量s为全局变量
    • 函数调用前必须已经存在函数定义,否则无法执行,Python内置函数直接使用,不需要引用任何模块
    • 模块内高耦合,模块间低耦合:高耦合的特点是复用较为困难,模块间关系应尽可能简单,模块之间耦合度低,尽可能合理划分功能块,功能块内部耦合度高
    • 递归不会提高程序的执行效率,任何递归程序都可以通过堆栈或队列变为非递归程序
    • 函数是一段具有特定功能的、可重用的语句组,可以看做是一段具有名字的程序,通过函数名来调用,同时不需要知道函数的内部实现原理,只需要知道调用方法(接口)即可
    • def func(*a,b):是错误的函数定义,*a表示可变参数,可变参数只能放在函数参数的最后,即def func(a,*b):
    • 函数可以包含0个或多个return语句
    • 每个递归函数至少存在一个基例,但可能存在多个基例,基例表示不再进行递归,同时决定了递归的深度

    编程测试:

    • 随机密码生成:以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出,产生密码采用random.randint()函数
    import random
    def genpwd(length):
        a = 10**(length-1)
        b = 10**length - 1
        return "{}".format(random.randint(a, b))
    length = eval(input())
    random.seed(17)
    for i in range(3):
        print(genpwd(length))
    
    #思路类似,同样过了
    def genpwd(length):
        high = 10**length
        low = 10**(length-1)
        return random.randrange(low,high)
    
    • 连续质数计算:获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
      注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号
    def prime(m): #判断是否为质数
        for i in range(2,m):
            if m%i == 0:
                return False
        return True
        
    n = eval(input())
    if n != int(n): #考虑输入为浮点数的情况
        n = int(n) + 1
    else:
        n = int(n)   
        
    times = 0 #统计质数的次数
    res = [] #存放输出结果
    while times < 5:
        if prime(n):
            res.append(n)
            times += 1
        n += 1
    for i in res[:len(res)-1]:
        print(i,end=",")
    print(res[-1]) #最后一个不输出逗号
    
    #参考答案
    def prime(m):
        for i in range(2,m):
            if m % i == 0:
                return False
        return True
    #需要对输入小数情况进行判断,获取超过该输入的最小整数(这里没用floor()函数)
    n = eval(input())
    n_ = int(n)
    n_ = n_+1 if n_ < n else n_
    count = 5
    #对输出格式进行判断,最后一个输出后不增加逗号(这里没用.join()方法)
    while count > 0:
        if prime(n_):
            if count > 1:
                print(n_, end=",")
            else:
                print(n_, end="")
            count -= 1 
        n_ += 1
    

    测验6:组合数据类型

    知识点概要:

    • 列表ls,ls.append(x)表示只能向列表最后增加一个元素,如果x是一个列表,则该列表作为一个元素增加到ls中
    • 集合“交并差补”四种运算分别对应的运算符是:& | - ^
    • 字典d,d.values()返回的是dict_values类型,包括字典中的所有值,通常与for…in组合使用
    • Python的元组类型:元组采用逗号和圆括号(可选)来表示,一旦创建就不能修改,一个元组可以作为另一个元祖的元素,可用多级索引获取信息,序列类型(元组、列表)中的元素都可以是不同类型
    • 创建字典时,如果相同键对应不同值,字典采用最后一个"键值对"
    d= {'a': 1, 'b': 2, 'b': '3'}
    print(d['b'])
    #输出结果:3
    
    • 集合与字典类型最外侧都用{}表示,不同在于集合类型元素是普通元素,字典类型元素是键值对。字典在程序设计中非常常用,因此直接采用{}默认生成一个空字典
    • 对于字典d:x in d表示判断x是否是字典d中的键,键是值的序号,也是字典中值的索引方式
    • Python序列类型有:列表类型、元组类型、字符串类型(Python内置数据类型中没有数组类型)
    • 组合数据类型能够将多个相同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易
    • 组合数据类型可以分为3类:序列类型、集合类型和映射类型;
    • Python的字符串元组列表类型都属于序列类型,序列类型总体上可以看成一维向量,如果其元素都是序列,则可被当作二维向量
    • 对于序列s:s.index(x)返回序列s中元素x第一次出现的序号,并不返回全部序号

    编程测试:

    • 数字不同数之和:获得用户输入的一个整数N,输出N中所出现不同数字的和‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6
    #参考答案:字符串可以通过list()直接变成列表,或通过set()直接变成集合
    n = input()
    ss = set(n)
    s = 0
    for i in ss:
        s += eval(i)
        #s += int(i) #同样可以
    print(s)
    
    • 人名最多数统计:给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名
    #先使用字典建立"姓名与出现次数"的关系,然后找出现次数最多数对应的姓名
    s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
           杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
           金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
           鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
           阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
           乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
           忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
           李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
           逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
           洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
           黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
           张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
           洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
           完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
           郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
           谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
           双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
           逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
           
    names = s.split()
    d = {}
    for name in names:
        d[name] = d.get(name, 0) + 1
    Maxkey = ""
    MaxValue = 0
    for k in d:
        if d[k] > MaxValue:
            Maxkey = k
            MaxValue = d[k]
    print(Maxkey)
    #参考答案
    ls = s.split()
    d = {}
    for i in ls:
        d[i] = d.get(i, 0) + 1
    max_name, max_cnt = "", 0
    for k in d:
        if d[k] > max_cnt:
            max_name, max_cnt = k, d[k]
    print(max_name)
    

    测验7:文件和数据格式化

    知识点概要:

    • 数据组织纬度一维数据采用线性方式组织,对应于数学中的数组和集合等概念;二维数据采用表格方式组织,对应于数学中的矩阵;高维数据由键值对类型的数据构成,采用对象方式组织,字典就用来表示高维数据,一般不用来表示一二纬数据
    • Python对文件操作采用的统一步骤是:打开-操作-关闭(其中关闭可以省略)
    • CSV文件格式是一种通用的、相对简单的文件格式,应用于程序之间转移表格数据,CSV文件的每一行是一维数据,可以使用Python中的列表类型表示,整个CSV文件是一个二维数据,一般来说,CSV文件都是文本文件,由相同的编码字符组成
    • 二维列表切片ls = [[1,2,3],[4,5,6],[7,8,9]]获取其中的元素5要使用:ls[1][1]
    • 文件可以包含任何内容,是数据的集合和抽象,是存储在辅助存储器上的数据序列,而函数或类才是程序的集合和抽象
    • 打开文件后采用close()关闭文件是一个好习惯。如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close(),默认关闭
    • Python文件的"+"打开模式,与r/w/a/x一同使用,在原功能基础上同时增加了读写功能,同时赋予文件的读写权限
    • 同一个文件既可以用文本方式打卡,也可以用二进制方式打开
    • 列表元素如果都是列表,其可能表示二维数据,如[[1,2],[3,4],[5,6]],如果列表元素不都是列表,则它表示一维数据
    • Python文件读操作有:read()、readline()、readlines(),没有readtext()方法

    编程测试:

    • 文本的平均列数:打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      (1)有效行指包含至少一个字符的行,不计算空行‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      (2)每行的列数为其有效字符数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬
      (3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位
    #for line in f 获取的line包含每行最后的换行符(\n),所以去掉该换行符再进行统计
    f = open("latex.log", "r", encoding="utf-8")
    lines = 0
    columns = 0
    for line in f:
        line = line.strip("\n")
        if len(line):
            lines += 1
            columns += len(line)
    print("{:.0f}".format(columns/lines))
    f.close()
    
    #参考答案如下:
    f = open("latex.log")
    s, c = 0, 0
    for line in f:
        line = line.strip("\n")
        if line == "":
            continue
        s += len(line)
        c += 1
    print(round(s/c))
    

    -CSV格式清洗与转换:附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    (1)按行进行倒序排列‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮
    (2)每行数据倒序排列‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    (3)使用分号(;)代替逗号(,)分割数据,无空格‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    按照上述要求转换后将数据输出

    f = open("data.csv", "r", encoding="utf-8")
    txt = f.readlines()
    txt.reverse() #按行进行倒序排列
    for line in txt:
        #line = line.strip("\n") #去除末尾换行符
        #line = line.replace(" ","") #去空格
        line = line.strip("\n").replace(" ", "")
        #ls = line.split(",") 
        #ls = ls[::-1]
        ls = line.split(",")[::-1] #逗号分隔并将分隔后的元素倒序
        print(";".join(ls)) #元素间插入分号
    f.close()
    
    #参考答案(使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格)
    f = open("data.csv")
    ls = f.readlines()
    ls = ls[::-1]
    lt = []
    for item in ls:
        item = item.strip("\n")
        item = item.replace(" ", "")
        lt = item.split(",")
        lt = lt[::-1]
        print(";".join(lt))
    f.close()
    

    测验8:程序设计方法学

    知识点概要:

    • 用户体验:编程只是手段,程序最终为人类服务,用户体验很重要,一个提醒进度的进度条、一个永不抛出异常的程序、一个快速的响应、一个漂亮的图标、一个合适尺寸的界面等都是用户体验的组成部分。总的来说,用户体验是一切能够提升程序用户感受的组成
    • 计算思维是基于计算机的思维模式,计算机出现之前,由于没有快速计算装置,计算所反映的思维模式主要是数学思维,即通过公式来求解问题。当快速计算装置出现后,计算思维才真正形成
    • 软件产品 = 程序功能 + 用户体验 ;产品不仅需要功能,更需要更好的用户体验。往往,产品都需要综合考虑技术功能和人文设计,这源于产品的商业特性。即,商业竞争要求产品不能只关心技术功能,更要关心用户易用和喜好需求
    • os库os.system()可以启动进程执行程序
    • 函数自顶向下设计的关键元素,通过定义函数及其参数逐层开展程序设计
    • os.path子库os.path.relpath(path)用来计算相对路径
    • Python第三方库安装:使用pip命令、使用集成安装工具或访问UCI网站下载安装文件,请不要直接联系作者索要第三方库
    • 计算思维的本质是:抽象自动化
    • os库是Python重要的标准库之一,提供了路径操作、进程管理等几百个函数功能,覆盖与操作系统、文件操作等相关的众多功能;os库适合所有操作系统
    • 计算生态以竞争发展、相互依存和迅速更迭为特点,在开源项目间不存在顶层设计,以类自然界"适者生存"的方式形成技术演进路径

    编程测试:

    • 英文字符的鲁棒输入:获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误
    inputStr = input()
    for i in inputStr:
        if i.islower() or i.isupper():
            print(i,end="")
         
    #参考答案:采用遍历字符的方式实现,通过约束字母表达到鲁棒效果
    alpha = []
    for i in range(26):
        alpha.append(chr(ord('a') + i))
        alpha.append(chr(ord('A') + i))
    s = input()
    for c in s:
        if c in alpha:
            print(c, end="")
    
    • 数字的鲁棒输入:获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果,要求:
      1)无论用户输入何种内容,程序无错误‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬
      2)如果输入有误,请输出"输入有误"
    number = input()
    try:
        #complex()和complex(eval())之间的比较
        #将能够排除非数字类型的输入
        if complex(number) == complex(eval(number)):
            print(eval(number) ** 2)
    except:
        print("输入有误") 
        
    '''
    不能直接使用eval(),否则用户可以通过输入表达式(如100**2)输入数字
    与要求不同(在实际应用中会带来安全隐患)
    '''
    

    测验9:Python计算生态纵览

    知识点概要:

    • Python网络爬虫方向第三方库有:Requests、Scrapy、pyspider
    • Python数据可视化方向第三方库有:Mayavi、Matplotlib、Seaborn
    • Python Web信息提取方向第三方库有:Beautiful Soup、Python-Goose、Re
    • Python游戏开发第三方库有:Panda3D、cocos2d、PyGame
    • Python数据分析方向第三方库有:Numpy、Pandas、Scipy
    • Python图形用户界面方向(GUI)第三方库有:PyQt5、wxPython、PyGObject
    • Python网站开发框架方向第三方库有:Django、Pyramid、Flask
    • Python文本处理方向第三方库有:NLTK、python-docx、PyPDF2
    • Python网络应用开发方向第三方库有:aip、MyQR、WeRobot
    • aip是百度的人工智能功能Python访问接口
    • Python人工智能方向第三方库有:TensorFlow、Scikit-learn、MXNet
    • Vizard是虚拟现实第三方库
    • pyovr是增强现实开发库
    • redis-py是redis数据的Python访问接口

    编程测试:

    • 系统基本信息获取:获取系统的递归深度、当前执行文件路径、系统最大UNICODE编码值等3个信息,并打印输出;输出格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      RECLIMIT:<深度>, EXEPATH:<文件路径>, UNICODE:<最大编码值>‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮
      提示:请在sys标准库中寻找上述功能
    import sys
    print("RECLIMIT:{}, EXEPATH:{}, UNICODE:{}".format(sys.getrecursionlimit(), sys.executable, sys.maxunicode))
    
    • 二维数据表格输出:tabulate能够对二维数据进行表格输出,是Python优秀的第三方计算生态。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬编写程序,能够输出如下风格效果的表格数据
      输出效果
    data = [ ["北京理工大学", "985", 2000], \
             ["清华大学", "985", 3000], \
             ["大连理工大学", "985", 4000], \
             ["深圳大学", "211", 2000], \
             ["沈阳大学", "省本", 2000], \
        ]
    from tabulate import tabulate
    print(tabulate(data, tablefmt="grid"))
    

    期末测验

    *编程测试:

    • 无空隙回声输出:获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出
    print(input().replace(" ",""))
    
    • 文件关键行数:关键行指一个文件中包含的不重复行。关键行数指一个文件中包含的不重复行的数量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬统计附件文件中关键行的数量
    f = open("latex.log", "r", encoding="utf-8")
    d = {}
    for line in f:
        d[line] = d.get(line, 0) + 1
    print("共{}关键行".format(len(d)))
    
    #参考答案:如果需要"去重"功能,请使用集合类型
    f = open("latex.log")
    ls = f.readlines()
    s = set(ls)
    print("共{}关键行".format(len(s)))
    
    • 剩余两题与测验九重复,不重复记录
    展开全文
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    C语言 42.C语言是一种计算机高级语言。 43.C语言允许直接访问物理地址,能进行...48.C程序书写格式,允许一行内可以写个语句 49.C程序的语句无行号 50.C语言的每个语句的最后必须有一个分号 51.C语言本身没有输入...

    公共考点
    1.算法的空间复杂度是指算法在执行过程中所需要的内存空间。
    2.算法的时间复杂度是指算法所需要的计算工作量。
    3.数据的逻辑结构与储存结构不是一一对应的。
    4.队列的修改是以先进先出的原则进行的。–与队列结构有关联的是先到先服务的作业调度。
    5.循环队列中的元素个数随队头指针和队尾指针变化而动态变化。
    6.C语言中的result只是一个自己定义的量
    7.对空和队满时,头尾指针均相等。
    8.冒泡法是在扫描过程中逐次比较相邻两个元素的大小。例:9+8+7+6+5+4+3+2+1=45.
    9.对象间的信息传递靠消息。
    10.多态性是指同一个操作可以是不同对象的行为。操作—对象。

    C语言
    1.源程序的扩展名为.c,目标程序的扩展名为.obj,可执行程序的扩展名为.exe(每个后缀为.c的C语言都可以单独进行编译)(C语言编译程序把.c编译成.obj的二进制文件)(链接形成.exe文件)
    2.循环结构、选择结构,顺序结构都是结构化程序的基本结构。
    3.N-S流程图是复杂算法的描述手段。
    4.长方形为处理框。椭圆形为连接点。
    5.一个c语言只能有一个主函数。
    6.函数的定义不可以嵌套,函数的调用可以嵌套。
    7.C语言总是以main函数开始执行。
    8.常量的类型:整型常量、实型常量、字符常量、字符串常量、符号常量。
    9.十进制整型常量:基本数字范围:0-9;(十进制小数两边必须有数字)
    八进制整型常量:以0开头,输出格式控制符为%o,基本数字范围0-7;
    十六进制整型常量:以0x开头,输出格式为%x,基本数字范围为0-15写为A-F或a-f;
    指数形式:e前必须有数字,e后必须为整数。
    10. 关键字属于标识符。(关键字不能做变量名也不能做函数名)
    11.数值型常量有整型常量、实型常量但均有正负值之分。
    12.语言的预编译处理可以可以用符号名代表一个常量定义是不必指定常量类型。
    13.实型常量又称实数或浮点数。在C语言中可以用单精度型和双精度型两种形式表示实型常量,分别用类型名float和double进行定义。实型常量在一般的微型集中占用4个字节,一般形式或者指数形式,数值范围都是-1038~1038,有效数字是7位。(不能是整形数据,如0)(常量的类型可以从字面上区分)(1为整型常量)(1.0为实型常量)(a为字符型常量)
    14.\0为八进制数,所以\09是错误的。
    15.字符常量在内存中占1个字节,字符常量可以进行关系运算。不能参与数值运算,可以参与任何整数运算。
    16.不能用字符串常量对字符数组名进行整体赋值操作。
    17.可以使用字符串常量来给一维数组进行复制。
    18.关于字节大小的问题

    16位编译器:char 1个字节  char* 2个字节 int 2个字节 float 4个字节 double 8个字节
    32位编译器:char 1个字节  char* 2个字节 int 4个字节 float 4个字节 double 8个字节
    64位编译器:char 1个字节  char* 2个字节 int 4个字节 float 4个字节 double 8个字节
    

    19.10进制转8进制,手算用 除8取余数法得
    20.十进制转十六进制为:除十六取余直到商为0,余数从后往前读。
    21.%f代表单精度浮点型数据(float),%lf代表双精度浮点型数(double)。
    单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。
    22.sizeof可以看成是一个无符号整型表达式(sizeof为字节运算符)
    23.强制运算符:(类型名)(表达式) 逗号运算符:, 条件运算符::? :
    24. 赋值运算符左边必须是(一个)变量。
    25.a=bc,先运算bc,这个表达式的含义是,若b与c相等,那么得出的值为1,若不等则为0.
    26.“^” 按位异或 两数的二进制对应位相同,则为0,不同则为1.
    27.“|” 按位或 两个二进制中只要有一个为1,则结果为1。
    28.“~” 按位取反 二进制 0变1,1变0.
    29. “&”按位与 两个二进制都为1,则该位的结果为1,否则为零
    【 零的按位取反是 -1(0在数学界既不是正数也不是负数)
    所有正整数的按位取反是其本身+1的负数
    所有负整数的按位取反是其本身+1的绝对值 】
    30.位运算的对象只能是整形或字符型数据
    31.||逻辑或 前后条件只要有一个满足则为真。
    32.&&逻辑与 前后条件同时满足表达式为真。
    33.再用||的地方一般可以用|代替,但是用|的地方不能用||代替。
    34.“&”取地址运算
    35“”指针运算符
    36.p是指针变量,则&p是变量p的地址
    37.p是指针变量,则
    p是变量p所指向地址的值
    38.基类型不同的指针变量不可以相互混用
    39.函数的类型可以是指针类型
    40.函数的参数可以是整型、实型、字符型、指针类型。
    41.在这里插入图片描述

    42.C语言是一种计算机高级语言。
    43.C语言允许直接访问物理地址,能进行位操作。
    44.C语言是结构化程序设计语言
    45.c程序要通过编译,连接才能得到可执行的目标程序
    46.用c语言编写程序,可以编写出任何类型的程序
    47.C语言允许有空函数
    48.C程序书写格式,允许一行内可以写几个语句
    49.C程序的语句无行号(C语言中给源程序加行号;行号是用来定位代码的,指文件在几行)
    50.C语言的每个语句的最后必须有一个分号
    51.C语言本身没有输入输出语句(没有特定的输入输出语句)
    52.C语言可用来编写应用软件,也可用来编写系软件
    53.TurboC是在微机上广泛使用的编译程序
    54.C语言的数据结构是以数据类型形式出现的(不是常量和变量)
    55.空类型是C语言的一种数据类型
    56.C语言中数据有常量和变量之分
    57.利用指针和结构体类型可以构成表、树等复杂的数据结构
    58.在C程序中对所用到的所有数据都必须指定其数据类型
    59.c程序运行过程中,其值不能被改变的量称为常量
    60.在程序运行过程中,其值可以改变的量称为变量
    61.C语言可以用一个标识符代表一个常量,称为符号常量
    62.C语言规定标识符只能由字母、数字和下划线三种字符组成
    63.C语言整型常量可用十进制整数、八进整数和十六进制整数三种形式表示
    64.在现微机上使用的C编译系统,每一个整型变量在内存中占2个字节
    65.整型变量的基本类型符为int
    66.在微机上,一个长整型变量在内存中占4个字节(float型变量在内存中占4个字节)
    67.一个int型变量的最大允许值为32767
    68.在一个整常量后面加一个字母“L”或“1”.则认为该常量是longint 型常量
    69.C语言实型常量可用二进制小数和指数二种形式表示
    70.C语言实型变量分为:float型、double型、long double型三类
    71.C语言doule型一个变量的数值有效数字是16位
    72.C语言的字符常量是用单引号括起来的一个字符
    73.C语言的转义字符是以一个“\”开头的一种特殊形式的字符常量
    74.C语言中换行符使用’\n’,这是一个转义字符
    75.转文字符\r的含义是回车。
    76.C语言的字符型变量只能存放一个字符
    77.C语言允许字符数据与整数直接进行算术运算
    78.C语言允许在定义变量的同时使变量初始化
    79.C语言允许整型、实型、字符型数据间可以混合运算
    80.C语言规定两个整数相除的结果为整数
    81.用求余运算符“%”作运算,运算符两侧均应为整型数据
    82.用算术运算符和括号将运算对象按C语法规则组成的式子,称为C算术表达式
    83.算术运算符的结合方向为“自左至右”
    84.强制类型转换时,原来变量的类型未发生变化
    85.自增、自减运算符的结合方向为“自右至左”
    86.自增运算符只能用于变量,不能用于常量或表达式
    87指针.自增(减)运算符也可以用于指针变量,使指向下一个地址
    88.运算符“=”的作用是将一个数据赋给一个变量
    89.运算符“”的作用是将两侧数据是否相等
    90.赋运算符的结合方向是“自右向左”
    91.凡是二目运算符,都可以与赋值运算符一起组合成复合赋值运算符
    92.运算符“
    ”的作用是将一个数据赋给一个变量
    93.C语言不允许将实型数据赋给整型变量
    94.一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式
    95.一个C程序可以由若干个源程序文件组成
    96.一个源文件可以由若千个函数和预处理命令以及全局变量声明部分组成
    97.空语句是C语言的一种语句
    98.复合语句中最后一个语句中最后的分号不能省略不写
    99.putchar函数的作用是向终端输出一个字符
    100.getchar函数的作用是从终端输入一个字符
    101.格式输出函数(print)一次可以输出多个数据
    102.printf函数的%ld格式参数,用来输入出长整型数据
    103.printf函数的%o格式参数,用来以8进制数形式输出整数
    104.printf函数的%f格式参数,用来以小数形式输出实数
    105.printf函数的%x格式参数,可以输出指定参数的16进制形式
    106.printf函数的%s格式参数,用来输出一个字符串
    107.C语言不是面向对象的程序设计语言
    108.printf函数的%e格式参数,以指数形式输出实数
    109.C语言单精度数的有效数一般为7位
    110.printf函数的%g格式参数
    111.%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式
    112.p++是指下一个地址。
    (p)++是指将p所指的数据的值加一。
    C编译器认为
    和++是同优先级操作符,且都是从右至左结合的,所以p++中的++只作用在p上,和(p++)意思一样;在(p)++中,由于()的优先级比和++都高,所以++作用在()内的表达式*p上。比如有:
    int x,y,a[]={1,2,3,4,5},*p=a,*q=a;
    x=*p++;//执行这一句后x=a[0]=1,p=a+1
    y=(*q)++;//执行这一句后,y=a[0]+1=2,q仍然=a
    113. printf函数的附加格式说明字符“m”的含义是指输出数据的最小宽度
    114.scanf函数中的“格式控制”后面应当是变量地址(不是变量符)
    115.逻辑运算符>算术运算符>关系运算符>条件运算符>赋值运算符(罗算管调幅)
    116.条件运算符的结合方向是“自右向左"
    117.if语中又包含文可以转在电百度网点电 平句的嵌套
    118.条件运算符要求有3个操作对象,称为三目运算符
    119.条件表达式中三个表达式的类型可以不同
    120.switch语句是多分支选择语句
    121.switch语句中每一个case的常量表达式的值必须互不相同
    122.switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行
    123.switch语句中多个case可以共用组执行语句
    124.goto语句为无条件转向语句
    125.C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现bre
    126.for循环语句中的3个表达式都可以省略
    127.C语句的一个循环体内允许又包含另一个完整的循环结构
    128.break语句不能用于循环语句和switch语句之外的任何其它语句中
    129.continue语句的作用是结束本次循环(而不是终止整个循环)
    130.C数组中的每一个元素都必须属于同一个数据类型
    131.C数组必须先定义,然后使用
    132.C语言规定只能逐个引用数组元素而不能一次引用整个数组
    133.在定义一维数组时可以只给一部分元素赋初值
    134.对二维数组初始化,可以分行给数组赋初值
    135.可以对二维数组的部分元素赋初值
    136.字符数组中的一个元素只存放一个字符
    137.如果一个字符数组中包含一个以上结束符’\0”,则遇第一个’\0’时输出就结束
    138.puts函数的作用是将一个字符串输出终端
    139.gets丽数的作用是从终端输入一个字符串到字符数组
    140.strlen 函数是测试字符串长度的函数
    141
    strcat函数是“字符串复制函数”。X
    strcpy函数是“字符串连接函数”。X
    strcmp函数是“字符串复制函数”。X
    strlwr函数是测试字符串长度的函数。X
    strupr函数是测试字符串长度的函数。X
    142.C程序一个函数可以被一个或多个函数调用多次
    143.一个C程序可由一个主函数和若干个其它函数构成
    144.C程序以源程序为单位进行编译(而不是函数)
    145.C程序由一个或多个源程序文件组成
    146.C语言在定义函数时是互相独立的,不能嵌套定义
    147.在调用有参函数时,主调函数和被调用函数之间有数据传递关系
    148.在调用一个函数的过程中又出现直接或间接地调用该函数本身称为函数的递归调用
    149.在一个函数内部定义的变量是内部变量,称为局部变量
    150.在函数之外定义的变量称为外部变量,是全局变量
    151.从变量的作用域角度来分,可以分为全局变量和局部变量(而不是静态和动态变量)
    152.静态存储方式是指在程序运行期间分配固定的存储空间的方式
    153.存储方法分为两大类:静态存储类和动态存储类
    154.C语言允许将局部变量的值放在CPU中的寄存器中,这种变量称为“寄存器变量”
    155.局部静态变量不能定义为寄存器变量
    156.如果一个函数只能被本文件中其它函数所调用,称为内部函数
    157.C源程序中的预处理命令,它不是C语言本身的组成部分
    158.宏定义不是C语句,在行末不加分号
    159.宏定又是用宏名代替一个字符串,只作简单的置换,不作正确性检查
    160.在进行宏定义时,可以引用已定义的宏名
    161.宏替换不占程序运行时间,只占编译时间
    162.文件包含处理是指个源文件可以将另一个的全部内容含进来源文件包
    163.一个include命令只能指定一个被包含文件
    164.存放变量地址的变量是指针变量
    165.C语言中变量的指针就是变量的地址
    166.函数的参数也可以是指针变量
    167.指针变量可以指向变量,也可以指向数组和数组元素
    168.引用数组元素可以用下标法,也可以用指针法
    169.用指针变量可以指向一维数组,也可以指向多维数组,用指针变量也可以指向一个函数
    170.一个函数可以带回一个整型值、字符值或实型值,也可以带回指针型的数据
    171.指针数组中的每一个元素都相当于一个指针变量
    172.指针数组中的每一个元素都相当于一个整型变量
    173.指针变量可以有空值,即该指针变量不指向任何变量
    174.若两个指针指向同一个数组的元素。则两指针变量可以进行比较
    175.用户自己定义一个结构教型后们其中并无具体数据
    176.在程序中使用的可和百网时 定义结构体类型的变量
    177.结构体类型的成员也可以是一个结构体变量
    178.结构体成员名可以与程序中的变量名相同
    179.不能将一个结构体变量作为一个整体进行输入和输出
    180.对结构体变量的成员可以像普通变量一样进行各种运算
    181.可以引用结构体变量的地址
    182.可以引用结构体变量成员的地址
    183.结构体数组的每个元素都是一个个结构体类型的数据
    184.对结构体数组可以初始化,即赋初值
    185.可以定义一个指针变量,用来指向一个结构体变量
    186.指针可以用结构体变量作链表中的结点
    187.malloc函数的返回值是一个指向分配域起始地址的指针
    188.建立动态链表是指在程序执行过程中从无到有地建立起一个链表
    189.使几个不同的变量共占同一段内存的结构,称为共用体类型的结构
    190.共用体变量所占的内存长度等于最长的成员长度
    191.定义了共用体变量,只能引用共用体变量中的成员(不能引用公用体变量)
    192.共用体变量的地址和它的各成员的地址都是同一地址
    193.共用体类型可以出现在结构体类型定义中
    194.结构体类型可以出在共用体类型定义中
    195.在C编译中,对枚举元素按常量处理
    196.一个整数不能直接赋给一个枚举变量
    枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
    枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。
    197.可以用typedef声明新的类型名来代替已有的类型名
    198.位运算的运算量只能是整型或字符型的数据
    200.位运算符与赋值运算符可以组成复合赋值运算符
    在 C 语言中, 一种方法是用叫做位段的构造类型来定义一个压缩信息的结构。
    201.已有定义int (*p)( );指针p可以指向函数的入口地址
    202.C语言中运算对象必须是整型的是%=
    203.int *p 表达的是p是指向int型数据的指针。
    204函数rewind的功能是将文件指针重新指向一个流的开头(即使文件指针重新返回文件的开始位置),int rewind(FILE *stream);并且无返值。
    205.如果函数值的类型与返回值类型不一致,以函数值类型为准
    206.c语言中形参和实参类型不一致时以形参的类型为准
    207.形参应该是函数声明的时候就已经定义好
    208.若有定义int t[3][2],能正确表达t数组元素地址的是–t[2]+1
    209.int[]={1,2};
    210.C语言中的循环语句有for,while,do-while和goto,,***不是if、switch、break
    211.不正确的赋值语句是—ch‘a+b’,正确的是ch=‘\0’ ch=‘7’+‘9’ ch=7+9
    212.正确的赋值语句x3=12;
    213.C语言逻辑运算时,0为假,非0为真
    214.字符串常量是以双引号扩起来的字符序列“a”(其他C语言常量‘\n’ 012)(e-2不是C语言常量----实数的指数形式中,e后面必须有一个整数)

    301.一个位段必须存储在同一存储单元中
    302.位段的长度不能大于存储单元的长度
    303.一个c程序由若干个函数构成,其中有且仅有一个主函数
    304.指针变量中存放的是它所指对象的地址
    305.在C语言中,分号是语句的必然组成部分
    306.结构体变量所占空间是各成员所占空间之和
    307.数据文件可顺序读取,也可借助文件的定位操作实现随机读取
    308.从用户的角度上讲,类型的含义是规定了该类型变量的取值范围和运算范围
    309.c语言中,变量和函数均具有类型和存贮类别两个属性
    340.顺序结构>选择结构>循环结构
    341.函数返回值的类型是由函数定义时指定的类型
    342.*与s[]相等
    343.当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等。
    344. getchar函数没有参数
    345.静态储存方式是在程序运行期间分配固定的储存方式的方式
    356.局部静态变量不能定义为寄存器变量
    357.不能把共用体变量作为函数的参数
    358.一个整数不能直接赋给一个枚举变量
    359.int *p=a 是对指针变量p的正确定义和初始化。
    360.Char s[]=”china”;
    Char p;
    P=s;
    p与s[]相等
    有int [],*p=a
    则p+5表示元素a[]的地址
    361.C语言中,退格符是\b
    362.C语言中,变量的隐含储存类别是auto
    363.实际参数和形式参数可以同名
    364.函数调用可以作为一个函数的形参
    365.结构化程序设计的3中结构是-顺序结构、选择结构、循环结构
    366.当从键盘输入数据时整型变量可以输出整型值和字符,对于实型变量可以输入实型数和整型数值
    367.C语言中逗号运算符的优先级最低,指针最优,单目运算优于双目运算。如正负号。
    先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
    逻辑运算最后结合。
    368.C语言区分定义变量名的大小写
    369.设有如下定义:
    struck sk
    { int a;
    float b;
    } data;
    int *p;
    若要使P指向data中的a域,正确的赋值语句是(C)A、 p=&a; B、 p=data.a; C、 p=&data.a; D、 *p=data.a;
    370.double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。
    371.设有以下说明语句:
    struct stu
    {
    int a;
    float b;
    }
    stutype;
    则下面叙述不正确的是( )。
    A) struct是结构体类型的关键字
    B) structstu是用户定义的结构体类型
    C) stutype是用户定义的结构体类型名
    D) a和b都是结构体成员名
    答案解析
    定义一个结构的一般形式为:
    struct结构体名
    {
    成员列表
    }变量名列表;
    本题中的stutype是在声明结构体类型structstu的同时定义的该结构体变量,而不是用户定义的结构体类型名。类型与变量是不同的概念; 2)对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量;3)成员也可以是一个结构体变量; 4)成员名可以与程序中的变量名相同,二者不代表同一对象。
    372.C语言中的数据类型是指-函数返回值的数据类型
    373.C程序设计语言的基本成分是数据成分、运算成分、控制成分、传输成分。
    374.while(t=1)循环控制表达式的值为1。
    375.printf(++x);表示地址所连接的数值加1.
    376.int[3][4]; 表示a为3行
    4列的数组,它可用的最大行下标为2,列下标最大为3;
    若是引用a[0][4],则超过了数组的范围
    377.若有如下说明和定义
    struct test
    {
    int ml; char m2; float m3;
    union uu
    {
    char ul[5]; int u2[2];
    }
    ua;
    } myaa;
    则sizeof(struct test)
    的值是A.12 B.16 C.14 D.9
    正确答案:A
    在本题中,首先定义了一个结构体。在该结构体中,定义了一个整型变量成员、一个字符型变量成员和一个浮点型变量成员,并在结构体中定义了一个联合体变量成员,联合体变量成员中又包含两个联合体成员数组。题目最后要求计算该结构体变量所占的存储空间。
    在C语言中,联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度,因此,本题的联合体部分所占的长度为5,但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和,因此,该结构体所需的存储空间为5+1+2+4=12。本题的正确答案选A。
    378.静态储存类别的关键词是static
    379.C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
    380.fseek(文件指针,位移量,起始点)
    “起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据。这样当文件的长度大于 64k时不致出现问题。ANSI C标准规定在数字的末尾加一个字母L,就表示long型。
    381.若有定义:int (*p)[4];则标识符p ,是一个指针指向一个含有四个整形元素的一维数组。
    382.基本数据类型:整型、实型、字符型
    383.EOF是指向文本文件的结束标志,NULL是打开文件错误时的返回值。feof(fp)用来判断文件是否在文件末尾,文本文件和二进制文件均可以使用此函数,如果遇到文件结束就返回1,否则返回0。
    384.C语言的函数可以嵌套调用
    385.标准库函数fgets(s,n,f)的功能是什么–从文件f中读取长度不超过n-1的字符串存入指针s所指的内存。
    从流中读一行或指定个字符,
    原型是char *fgets(char *s, int n, FILE *stream);
    从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
    形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
    说得简单一点就是从f这个文件输入流中读取n-1个字符,存到s中。
    如果一行的字符数小于n-1,那么就是一行的字符数,所以应该理解为不超过n-1,如果一行的长度大于n-1,就是n-1个字符
    386.
    1、数据计算类型不同。基本数据类型分为三类:整数型(定点型)、实数型(浮点型)和字符型。除了基本数据类型,还有构造类型(数组、结构体、共用体、枚举类型)、指针类型、空类型void。
    2、各种数据类型的关键词不同。short、long、int、float、double、char六个关键词表示C语言里六种基本数据类型。
    3、不同数据类型占用内存的大小不同。short占2byte,int占4byte,long占4byte,float占2byte,double占8byte,char占1byte(不同的平台可能占用内存大小不一样,具体的可以用sizeof 测试下)。
    387.一个可以没有变量定义和执行部分,例如空函数

    展开全文
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    建议在/mnt里建个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat): 软盘 ==...
  • 区块链学习笔记(初识区块链)

    千次阅读 多人点赞 2019-08-05 12:38:52
    区块链 区块链比比特币更加迷人,区块链具有革命性的意义,它是一个创造信任...引入智能合约,ETH(以太坊)为代表,主要与金融领结合 智能指的是smart,小巧,灵活 以太坊做出的东西有点像苹果的App Store,所有人...

    区块链

    区块链比比特币更加迷人,区块链具有革命性的意义,它是一个创造信任的机器
    AI是生产力的提升,区块链是生产关系的变更,可能使人类的生产结构产生重大变革,淡化国家的权利机构
    比特币按字节数收费

    一.发展阶段
    v1.0

    比特币,点对点金融支付

    v2.0

    引入智能合约,ETH(以太坊)为代表,主要与金融领结合

    智能指的是smart,小巧,灵活

    以太坊做出的东西有点像苹果的App Store,所有人都可以在上边开发,执行

    以太坊诟病,所有应用都用一条链,导致网络拥堵

    智能合约指的是把一个合同数字化,用代码维护,表示

    IPFS:星际文件存储

    V3.0

    区块链与社会,区块链与各个行业融合,物联网,存储,游戏,(物联网+区块链)区块链+
    EUS:类似微软的操作系统,商业化,性能大幅度提升
    区块链大火,人们失去理智
    阿里走在区块链技术专利的前列

    二.协议分层
    在这里插入图片描述

    pow全网记账,pos全网随机选一个记账,dpos选出少数人记账
    DBFT 拜占庭容错机制,小米应用的技术
    区块链中的token 放在金融领域就是账单,放在游戏里就是积分

     数据层

    1. 区块链数据
    2. 链式结构
    3. 数字签名
    4. 哈希函数(数字摘要)
    5. Merkle树
    6. 非对称加密

     网络层

    1. P2P网络
    2. 传播机制
    3. 验证机制

     共识层
    有共识机制去中心化才有意义,才具备可信度,否则只是数据共享
    拜占庭将军问题、保证全网账本一致性。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

     激励层

    1. 发行机制
      一次性发完?慢慢挖?增发?
    2. 分配机制
      合约层
      1.智能合约
      在这里插入图片描述

     应用层
    1.转账记账等

    三.区块链特点

    1.去中心化
    2.不可伪造
    3.不可篡改
    4.不可复制:资产的转移
    5.匿名
    6.基于密码学:非对称加密
    7.分布式
    8.可溯源
    9.账本公开
    匿名货币是加密的,如何公开透明,所以呼吁禁止
    Xmr(门罗链)xmc(门罗原链)

    四.区块链的应用场景分类

    1. 公有链
      所有人都可以随时加入,每个节点平等,都有交易和记账,开放式
      *比特币
      *以太坊
      *EOS
      *NEO
      *量子链
      *比原链
      *并通链
      *墨客链
      在这里插入图片描述
      在这里插入图片描述

    主流项目(按照分类来写,共链,应用,协议等等)
    Augur,SNT,以太猫(待补充)

    五.区块链的相关概念
    *算力
    *矿工 节点,算力厉害,网络好
    *挖矿
    1.矿场
    集中矿机设备的场所
    2.矿池:负责打包,丢个矿场计算
    一个软件,矿场和普通矿工接入,矿池负责打包,接入的设备负责挖矿
    (主流的矿池:鱼池,蚁池,币网,国池等)
    *分叉
    1.代码升级时不同社区意见发生分歧时的结果
    2.分叉后会得到等量的新币种,称为糖果
    3.软分叉(链出bug,解bug很难,只能分叉)
    旧节点接受新协议产生的区块,毫无感知,新老协议共同维护一条链
    4.硬分叉
    旧节点拒绝接收新节点创造的区块,从此分裂为两条独立的链
    案例:以太坊分叉,分为ETC(以太经典 ,有自己的链),ETH(以太坊 v神 )

    *叔块(以太坊的概念,比特币叫孤块即链分叉,二选一,选最长链)
    *共识机制
    *侧链 (平行且独立于主链的链条,可以和主链资产交互,弥补主链的功能的缺失,可以理解成插件,但它很安全)
    *只能合约(可以触发支付,不需要中间人)
    转账、手续费(比特币手续费可给可不给,以太坊必须给,智能合约里每字节都消耗gas,最小单位叫wei eth=xxxx wei,gas数量gas价格=消耗的eth(xxx wei))

    *节点
    1.轻节点(存储东西少,只存储和自己相关的交易,依赖于连接的全节点,可以做简单的确认操作)
    2.全节点
    *钱包(软件,可发起交易,查看余额等,维护公钥私钥,一个客户端可以创建多个钱包,可以有多个地址)
    1.功能
    创建私钥公钥,保存私钥,相当于钱包,可以存多个地址
    2. 种类
    1 PC钱包
    2 手机钱包
    3 纸钱包(卡片,私钥和地址,扫码支付)
    在这里插入图片描述

    4 网页钱包(blockchain .info)
    5 冷钱包(硬件设备,不联网)
    6 热钱包(联网)(冷即断网,热即联网)
    7 全节点钱包
    同步所有数据
    8 轻节点钱包
    仅同步和自己相关的交易数据
    9 中心化钱包(交易平台)
    &零知识证明
    在不向对方提供任何个人信息的条件下使对方相信某个论断是正确的一种技术,
    解决验证问题,例如ZCASH币
    &扩容方式
    1 隔离见证(提出验证信息,存放更多交易信息)
    将每笔交易中的数字签名移除,从而容纳更多的交易
    2 硬分叉
    BCH和BTC

    六.应用领域
    四类应用
    1数字资产
    *一般数字资产
    比特币,莱特币
    *匿名数字资产
    达世币(混币),门罗币,大零币(ZCASH)

    2全球结算
    瑞波币 Ripple 2017年明显

    3 平台类
    *Golem
    计算资源交易平台,用户租用算力,依赖平台参与者数量GNT
    *Augur
    群体智慧、市场预测平台

    4 应用类
    1 智能合约案例:
    *房屋租赁
    按月支付房租,发放钥匙
    *设立遗嘱
    自动分配财产
    *储蓄钱包
    将钱放入合约中,降低丢失秘钥风险
    *作物保险
    金融衍生品,收成差有补偿,收成好有钱赚
    *金融租赁
    跳过银行和律师,直接向金融机构几款,省去中间费用
    *博彩发行
    类似于彩票发行,将发放信息写入区块,全民参与下注,结果产生后自动处理现金

    区块链适用领域
     证券交易
     供应链金融
     征信体系
     互助保险
     公益事业
     档案管理(档案上链)
     专利保护(时间戳)
     商品溯源
     防伪
     支付清算

    存在问题
    1 安全性问题
    *被骗无法撤销
    *打入错误地址无法找回
    *合约存在欺诈、bug等
    2 存储问题,账本过大
    *ipfs协议解决(星际文件传输系统,HTTP可以被代替,访问网页经常出现404,服务端删除数据,那么就访问不到了,访问一个资源是按照IP地址访问的,ipfs是按照内容访问的,每个文件做一个hash值即索引,真正访问文件是按hash值访问,离你最近的节点会把内容反馈给你,如果该项目成功那么世界上就没有404了。为所有提供网络存储的人提供一种奖励,提供押金,如果作恶,有相应的惩罚 )
    &filcoin项目
    &墨客子链ipfs
    *以太坊 swarm

    私密性
    数据透明度高,所有信息公开,地址和人士分离的,若一旦对应上,一切资产透明,
    是一把双刃剑,无隐私。

    意外情况
    1 执行合约的风险
    远程回收(锁定)汽车时,汽车的状态?如果是在运行,存在危险
    高速公路急刹车不让你用,很危险

    区块链上目前缺少应用,app
    以太猫实现其实很简单,不过被炒到天价

    (本笔记内容整理自网络资源,侵删)

    展开全文
  • 验证用户输入的是否位数字,若是数字则求平方,若不是数字则给出提示。 运算符 a.数学运算符 + - * / % ++ – +:表示数学加法,或者字符串连接运输 -、*:若字符串参与,将数值字符串以数字参与运算 /:java...

    1.JS概述
    1)概念
    js全程:JavaScript(一门客户端脚本语言)
    a.js可以直接嵌入在html页面中,由浏览器解释执行,不进行预编译
    b.用于向页面添加动态交互行为
    c.具有与java语言类似的语法,一种网页编程语言

    操作方向:
    —操作DOM元素(html元素)
    —操作BOM元素(浏览器对象)

    2)js特点:
    1.解释执行:不需要预编译,逐行执行
    2.基于对象:内置了大量的现成对象

    3)作用
    a.实现客户端数据简单计算
    b.客户端表单合法性验证
    c.添加浏览器事件的突发
    d.网页特殊显示效果的制作
    e.实现服务器的异步数据提交

    4)遵循es规范(es6)
    a.严格区分大小写
    b.数字、字母、下划线、$组成,不能用数字开头
    c.驼峰命名法

    5)写法
    a.行内式(定义事件)
    在事件中定义操作,直接写js代码
    alert(); 弹出警告框
    事件:
    onclick 鼠标点击
    ondblclick 鼠标双击
    onmouseover 鼠标移入
    onmouseout 鼠标移出
    onkeydown 键盘按下
    onkeyup 键盘抬起
    onblur 失去焦点
    onfocus 获取焦点
    写法:
    οnclick=“函数()”; 事件=“事件触发的函数”;

    b.内部式(嵌入式)
    嵌入在页面的

    c.外部式(文件调用)
    js代码位于单独的.js文件中(注意保存的编码)
    写法:
    step1:在js文件中写js代码(定义行数)
    step2:将.js文件引入到当前页面中

    step3:在html行内添加事件,调用函数

    js注释
    单行://注释文字
    多行:/注释文字/

    js控制台:
    不需要页面也可以直接在控制台(console)写js代码
    F12(右击检查)---->打开控制台
    Enter回车键:执行
    Shift+Enter:换行

    console.log(内容);//将内容打印到控制台

    2.js组成
    1)变量(var let const 无)
    js是弱类型语言,使用var关键字声明变量
    刑如:
    var a = 1;
    var s = “李四”;

    拆:
    var a;//a没有类型
    var a=1;//初始化a才会有类型,a为number类型
    a=“李四”;//a为String类型

    typeof 变量名;//用来验证变量名

    注意:
    1.js是弱类型语言,不同的变量类型会根据数值自动给定类型
    2.变量没有类型,统一用关键字var声明,变量值是有类型的
    3.使用“=”进行赋值,没有初始化的变量自动取值为undefined
    4.js存在变量声明提升(js会根据不同的值自动转换为对应的数据类型)

    js数据类型
    a.基本类型number、string,boolean
    number:不区分整数和小数

     string:一对引号包裹的字符串(单双引都可以)
     ----单双引号只能交替引用,特殊字符需要转义   \n  \t  \s
     常用函数:
     str.indexof("",from[int index]);
     返回指定字符串在str中第一次出现的位置(从from开始第一次出现的位置)
     str.replace("","");
     将指定字符串替换为指定字符串,只替换第一个,属于不完全替换
     
     boolean:仅有两个值,true、false
     可以参与运算,自动作为数值,true值为1,false为0
    

    b.特殊类型undefined、null
    undefined
    变量声明未初始化,该变量的值和类型均为undefined
    null
    代表"无值"或者"无对象",可以通过一个变量赋值null来清空变量内容

    c.对象类型object
    内置对象 外部对象 自定义对象

    数据类型转换:
    a.自动转换(直接转换属于默认规则)
    number+string=string
    boolean+string=string
    boolean+number=number
    boolean+boolean=number

    b.强制转换(利用类型转换函数)
    toString();任何类型转换成string类型

    parseInt();强转为整数,全局函数,具有截取功能

    parseFloat();强转为小数,全局函数,具有截取功能

    NaN:Not a Number(不是数字,不能转换成数字)

    isNaN();全局函数,判断是否为非数字(true表示非数字,false表示数字)

    案例1:
    验证用户输入的是否位数字,若是数字则求平方,若不是数字则给出提示。

    运算符
    a.数学运算符 + - * / % ++ –
    +:表示数学加法,或者字符串连接运输
    -、*:若字符串参与,将数值字符串以数字参与运算
    /:java中7/2=3,js中7/2=3.5

    b.关系运算  > >= < <= == !=
    ==:只比较值,不比较类型
    ===:比较类型和值
     
    c.逻辑运算符&&(与) ||(或) !(非) 
     短路逻辑:结果为boolean类型,true或者false
     非短路逻辑:结果为number类型(1或者0)
     
    d.三元运算符(三目)
    语法:判断表达式?表达式1:表达式2;
    
    注意:js中出现的判断表达式或者调解表达式可以为任意表达式,可以为任何类型
    转换规则:
    非0数字、非空字符串、{}、对象----->true
    0、null、“”、undefined、NaN------->false
    

    案例2:
    用户在页面输入一个值,判断是否为50,要求提升用户输入大,小,对?

    js的流程控制
    a.分支流程if-else ,switch-case

    b.循环流程	for,while,do-while
    

    案例3:
    统计输入框重点敏感字(gun)出现的次数,将敏感字替换为"***"

    调错方式:
    1.在js代码中添加console.log()或者alert()
    2.检查浏览器缓存的js文件,看错误信息
    3.浏览器自带的断点debugger调试

    内置对象:
    简单内置对象:Number String
    组合内置对象:Math Date Array
    复杂内置对象:Funtion RegExp

    1.Number:对象
    var age=10;
    var salary=new Number(10);//不常用
    
    常用函数:
    num.toFixed(n);
    将数值转成为字符串,并通过四舍五入保留小数点后n位,如果位数不够补0
     
    2.String:对象
    var str1="abc";
    var str2=new String("abc");	//不常用
    
    常用属性与函数:
    length;返回字符串长度
    toUpperCase();小转大
    toLowerCase();大转小
    charAt(index);返回指定位置的字符串
    indexOf(findStr,[fromIndex]);从指定下标位置查找字符串第一次出现的位置
    lastIndexOf(findStr);返回一个指定字符串最后一次出现的位置
    substring(start,[end]);截取指定下标位置的字符串(前包括后不包括)
    split(byStr,[howmany]);将字符串进行拆分,得到字符串数组(几个)
    replace(findStr,toStr);字符串替换(不完全替换)
    

    组合内置对象:Math Date Array
    复杂内置对象:Funtion RegExp

    3.Math对象
    常用函数:
    Math.sqrt(a);//返回数字a的平方根
    pow(a,b);//返回a的b次幂(方)
    random();//返回0-1之间的随机数
    round(x);//返回数字x四舍五入最接近的整数
    max(x,y,z…);//找出其中最大值
    min(x,y,z…);//找出其中最小值
    abs(x);//返回x的绝对值
    floor();//向下取整
    ceil();//向上取整

    4.Date对象
    var date=new Date();//当前系统时间
    var date1=new Date(“2009/02/05”);//指定日期时间

    常用函数:
    getTime();//获取当前时间的毫秒值
    getDate();//获取当前日期
    getDay();//获取当前一周的第几天
    getFullYear();//获取当前的年份
    toLocalString();//转换成字符串数据(当前时间)
    setDate();//修改日期本身的值

    5.Array对象(数组的数据类型可以不一致)
    var arr1=[10,“张三”,30,true];//常用
    var arr2=new Array(10,“张三”,30,true);
    var arr3=new Array();
    var arr4=new Array(5);//指定数组长度

    注意:数组长度是可变的,由内部元素撑开大小

    常用属性和函数:
    length;获取数组长度
    reverse();翻转数组
    sort([函数名]);数组排序,默认规则:数组的数据首个字母排序;自定义规则:根据传的函数名排序。


    6.Function对象
    js中函数就是Function对象,函数名就是指向Function对象的引用,
    可以直接使用函数名访问函数对象,函数名()是调用函数。

    函数定义:
    方式一,使用function关键字声明一个函数	
    function 函数名([参数]){
       函数体;
       return 返回值;
    }
    函数的返回值默认返回undefined,可以使用return返回具体的值
    
    方式二,匿名函数
    var 函数名=function([参数]){
        函数体;
       return 返回值;
    }
    
    方式三,创建一个Function对象
    var 函数名=new Function("参数1","参数2","函数体;");
    ps:小括号里面前面是函数的参数,后面是函数体
    
    补充:
    方式四,箭头函数(c6以后)
    var 函数名=([参数])=>{函数体;}
    
    注意:在js中没有类似于java的重载,如果方法名相同,则以最后一个为准
    
    
    js如果需要实现类似于java的重载效果,可以使用arguments对象实现
    arguments代表当前方法被传入的所有参数形成的参数数组
    arguments.length:函数的参数个数
    arguments[i]:取第i个下标的元素
    
    补充:变量的作用域(var 无 let const)
     1.var声明的变量,可以修改,不初始化输出undefined,有作用域
            定义在函数内部--->私有变量--->整个函数体
    		定义在函数外部--->全局变量--->整个js(存在变量提升)
     2.let是块级作用域,函数内部使用let定义后,对函数外部无影响
     3.const定义的变量初始化以后不可以修改--->类似于java常量
     4.没有任何关键字声明的变量--->全局变量
    

    全局函数:所有js对象都可以使用
    parseInt(); parseFloat(); isNaN();
    eval(“js代码”);-----执行函数
    只接受合法的表达式和语句/只接受原始的字符串


    7.RegExp正则对象
    var reg=/正则表达式/tag;
    var reg=new RegExp(“正则表达式”,“tag”);

    tag标识:
    g(globel):设定当前匹配为全局匹配
    i(ignore):忽略匹配中的大小写检查

    正则表达式的常用组成部分:
    () 普通
    [] 枚举,范围 [12345]/[1-5]
    {} 次数,个数

    /a/:不完全匹配
    /^a/:以a开头
    /a / : 以 a 结 尾 / a /:以a结尾 /^a /:a/a/:完全匹配

    常用函数:
    正则对象.text(字符串);
    判断一个字符串是否匹配该正则表达式,符合返回true,不符合返回false

    String对象中适用正则的函数:
    str.replace(reg,toStr);//替换
    str.match(reg);//返回匹配字符串匹配正则的内容,形成数组
    str.search(reg);//返回字符串第一次匹配正则的下标

    外部对象:
    BOM(Broswer Object Model):浏览器对象模型
    用来访问和操作浏览器窗口,是js有能力和浏览器对话,
    执行操作不与页面内容发生直接关系,没有相关标准,但被广泛支持和使用


    DOM(Document Object Model):文档对象模型(html文档)
    用来操作文档,定义了访问和操作html文档的标准方法,应用程序通过DOM操作,
    来实现对html文档数据的操作,当页面被加载时,浏览器会创建页面的文档对象模型(DOM树),
    通过可编程的对象模型,js能够创建动态的html(元素、属性、样式、事件)。
    DOM常用操作:读取节点的信息、修改节点的信息、创建新节点、删除节点

    1.BOM对象
    window是前台最大的对象,用来表示浏览器窗口。全部的js都是全局变量、全局对象和全局函数。
    比如:alert(111);等价于window.alert(111);

    5个属性:
    document:窗口中显示的html文档
    history:浏览器窗口的历史记录
    location:窗口文件地址
    screen:浏览器当前屏幕
    navigator:浏览器相关信息

    5个对象:
    Document:
    History:
    length:返回访问的地址个数
    back();返回上一个地址
    forward();进入下一个地址
    go(index:index<0 回退,index>0 前进)
    Location:
    href:当前窗口正在浏览的网页地址
    reload();重新载入当前页面
    Screen:
    width;实际的屏幕宽度
    height;实际屏幕的高度
    availWidth;可用的屏幕宽度
    availHeight;可用的屏幕高度
    Navigator:
    userAgent;获取浏览器相关信息的属性

    全局函数:
    对话框:
    window.alert(msg);//提示对话框(警告框)
    window.confirm(msg);//确认对话框
    window.prompt();//文本输入框

    打开新窗口:
    window.open(url);//打开新窗口
    

    定时器:
    a.一次性定时器
    在一个设定的事件间隔后执行代码,不是函数被调用之后立即执行
    var t=window.setTimeout(执行语句|函数名,time);
    t表示返回已经启动的定时器对象
    time表示时间间隔,单位毫秒
    
    停止定时器:clearTimeout(t);
    
    b.周期性定时器
    以一定的时间间隔循环执行代码
    var t=setInterval(执行语句|函数名,time);
    
    停止计时器:clearInterval(t);
    
    案例:
    显示时间按钮,启动时间按钮,停止时间按钮
    

    DOM对象(DOM树)在页面加载时候由浏览器生成的整个html文档,
    操作文档中任何内容,都需要通过document

    js可以创建动态的html(元素(节点)、属性、样式、事件)
    js对DOM操作:查找、读取、修改、新增、删除
    

    查找(节点):
    1.通过id查找
    document.getElementById(“id名”);
    如果id值错误,则返回null

    2.通过标签名查找
         document.getElementsByTagName("标签名");
    	 根据指定标签名返回全部元素组成数组,
    	 如果标签名错误,返回长度为0的节点数组,根据下标定位具体的节点
    	 
    3.通过添加name属性查找
        document.getElementsByName("name属性");
    	根据指定的name返回全部的元素组成数组
    	
    4.通过层次查找节点
        ele.parentNode
    	遵循文档的上下层次结构,查找单个父节点
    	
    	ele.childNodes
        遵循文档的上下层次结构,查找多个子节点
    
    5.根据选择器查找节点
        document.querySelector("选择器");
    	选择符合选择器的第一个节点
    	
    	document.querySelectorAll("选择器");
    	选择符合选择器的所有节点
    
    6.根据class属性查找
        document.getElementsByClassName("选择器");
    	根据指定的class返回全部的元素组成的数组
    

    读取、修改(文本、属性、样式…)
    innerHTML属性:
    设置或者获取位于对象起始和结束标签内的文本
    不解析html文本,将文本内容当成字符串打印

    innerText属性:
    设置或者获取位于对象起始和结束标签内的文本
    只能获取解析之后的文本内容

     读取:ele.innerHTML       ele.innerText
     修改:ele.innerHTML=值    ele.innerText=值
    

    读取、修改样式
    读取:ele.style
    修改:ele.style=“样式:样式值”;
    ele.style.样式属性=“样式”;

    注意:样式属性的写法 font-size改成fontSize(驼峰写法)
    

    读取、修改属性
    读取:ele.属性;
    修改:ele.属性=值;

      读取:ele.getAttribute(属性名);	  
      修改:ele.setAttribute(属性名,属性值);	  
    

    获取、修改节点class(推荐)
    ele.className
    ele.className=值;

    案例:
    图片的显示和隐藏

    轮播图

    新增节点:
    1.通过innerHTML属性给页面添加节点
    ele.innerHTML=“html代码”;

    2.通过函数给页面添加节点
    a.创建节点
    document.createElement(“节点名称”);

     b.添加新节点到指定位置
     追加:新节点作为父节点的最后一个子节点添加
     父节点.appendChild(新节点);
     
     旧节点为参考点,新节点位于此节点之前添加
     父节点.insertBefore(新节点,旧节点);
    

    删除节点:
    父节点.removeChild(删除的指定节点);


    js的事件:
    事件是指页面元素状态改变,用户在操作鼠标或者键盘时触发的动作

    鼠标事件:
    onclick; 鼠标单机
    ondblclick; 鼠标双击
    onmouseover; 鼠标移入
    onmouseout; 鼠标移出
    onmousedown; 鼠标按下
    onmouseup; 鼠标抬起

    键盘事件: e.keyCode 键盘键码值
    onkeydown 键盘按键按下
    onkeyup 键盘按键抬起

    状态事件:
    onfocus 获取焦点
    onblur 失去焦点
    onchange 选择(下拉框、单选框、复选框)
    onsubmit 表单提交
    onload 加载

    事件的定义:
    方式一,在元素上添加对应的事件
    如:

    方式二,在js中直接给元素节点添加事件
    元素节点.事件名=function(){}

    方式三,元素节点.事件名=函数名;

    event对象
    任何事件触发之后都会产生一个event对象

    事件冒泡:
    若子节点和父节点有相同的事件,子节点会向上触发父节点的同名事件

    取消事件冒泡:e.cancelBubble=true;

    **
    js自定义对象
    自定义对象是一种特殊的数据类型,有属性和方法封装而成

    属性:指与对象有关的值,访问方式:对象名.属性名
    方法:指对象可以执行的行为或者可以完成的功能
    访问方式:对象名.方法名

    创建自定义对象的三种方式:
    方式一:直接创建对象(直接创建Object对象)
    var user=new Object();

    方式二:"构造器"创建对象

    方式三:JSON创建对象(JSON是一个轻量级数据交换格式)
    JSON使用属性名:属性值的方式定义,所有的名称都要用双引号引起来,多个属性直接用逗号隔开

    展开全文
  • 每一个比特码元是由两位二进制信息比特组成的,它们分别代表四进制四个符号中的一 个符号。QPSK 中每次调制可传输2 个信息比特,这些信息比特是通过载波的四种相位来进行传递的。解 调器根据星座图及接收到的载波...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    测试模型 H模型: H模型图 优点: 1 介入早 与开发并行 更早的发现问题 2 测试过程独立于开发过程 更客观 更主动 V模型 V模型图 ㈠需求阶段 产品经理,项目经理,产品工程师写《需求规格说明书》Software ...
  • Python 入门&环境搭建&变量&数据类型

    千次阅读 多人点赞 2019-09-16 18:36:07
    变量名:必须是大小写英文、数字和_组成,且不能用数字开头,不能使用内置关键字,严格区分大小写 规范:变量名 = 变量值 比如: #字符串既可以是单引号也可以是引号 name = '蓝二...
  • 计算机网络谢希仁第七版 第二章 课后答案

    万次阅读 多人点赞 2019-07-03 23:04:12
    码元(code):在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。 单工通信:即只有一个方向的通信而没有反方向的交互。半双工通信:即通信和双方都可以发送信息,但不能双方同时发送...
  • 居民身份证号码每个数字代表什么

    千次阅读 2018-09-26 18:07:02
    二代居民身份证号码按照《公民身份证号码》国家标准编制,身份证号码由18位数字组成:前6位为行政区划分代码,第7位至14位为出生日期码,第15位至17位为顺序码,第18位为校验码。  老居民身份证号码为15位数字。...
  • matlab信号处理

    千次阅读 2016-08-31 12:00:57
    数字信号处理基本理论 在计算机中,所有的信号都是离散信号,因此在使用 MATLAB 进行信号处理之前,首 先要了解离散时间信号处理的相关理论。 离散信号 信号是信息的表现形式,是通信传输的客观对象,其...
  • 九阳豆浆机各型号字母数字代表的意思
  • 普林斯顿Stata教程 - Stata数据处理

    万次阅读 2018-06-04 11:46:41
    遵循Stata建议,我们将使用ISO标准的字母语言代码, en 代表英文, es 代表西班牙语。 首先我们使用 label language 用来重命名当前语言为 en ,并创建一个新的语言集 es : label language en, rename ...
  • 一、表示方法 在计算机中,浮点数一般由三部分组成:符号位+阶码+尾数。 这种浮点数是用科学记数法来表示的,即:浮点数...(2) 精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。 (3) 临时浮点数(80位),
  • 本文来源:数字孪生DigitalTwin(北京航空航天大学,自动化科学与电气工程学院,数字孪生研究组) 摘要:当前数字孪生备受学术界、工业界、金融界以及政府部门关注。然而各界对...
  • 输入为3个正整数,分别代表三角形的3条边a、b、c。 输出格式: 如果输入的边能构成一个三角形,则在一行内,按照 area = 面积; perimeter = 周长 的格式输出,保留两位小数。否则,输出 These ...
  • 转义字符

    千次阅读 多人点赞 2018-09-13 22:17:52
    八进制形式的转义字符最多后跟三个数字,也即\ddd,最大取值是\177; 十六进制形式的转义字符最多后跟两个数字,也即\xdd,最大取值是\7f。 超出范围的转义字符的行为是未定义的,有的编译器会将编码值直接输出,有...
  • 数字-数字编码和模拟-数字编码

    千次阅读 2019-11-30 16:02:53
    信息的编码方式依赖于它原始的...数字-数字编码是用数字信号来表示数字信息。 它们可以归为三大类: 1. 单极性编码 单极性编码的名称是指它的电压只有一极,因此二进制的两个状态只有一个进行了编码,通常是1,另一...
  • 上一篇主要讲了H.264,接下来我们看一下其他编解码标准。...参看:目前主流的数字视频压缩编解码标准 参看:视频编码标准汇总及比较 参看:An explanation of video compression techniques JPEG ...
  • 缓冲技术讲解

    万次阅读 2017-05-15 17:49:17
    但是在我们的程序运行过程中,有件事情会发生。 其中之一是,我们的游戏运行时,视频显示将不断从framebuffer读取。 这可能会给我们带来问题。 假设我们想要一张幸福的脸孔出现在屏幕上 , 我们的程序开始循环帧...
  • 【转】数字货币钱包:生态及技术

    千次阅读 2019-05-13 18:31:09
    钱包作为数字货币行业的基础设施,在数字货币行业中具有资产管理,巩固用户群体流量及导流的相关作用,下面的一张图中大致介绍了数字货币钱包的生态结构。 -图1.1 数字货币钱包生态上下游关系- 钱包上游 作为...
  • 数字图像处理知识点

    千次阅读 多人点赞 2020-02-03 16:11:34
    数字图像处理知识点 目录 数字图像处理知识点 第一章 概述 1.1数字图像处理相关概念 1.2数字图像处理系统流程图: 1.3 数字图像处理主要研究内容 第二章 数字图像处理基础 2.1图像的数字化及表达 2.2图像...
  • 数字电子技术 实验一

    千次阅读 多人点赞 2019-08-03 19:42:48
    使用multisim对数字电路进行功能验证 二、实验内容 利用基本逻辑门对半加器进行电路设计和仿真 验证译码器74LS138N的逻辑功能 三、实验步骤 1. 半加器电路仿真 (1)半加器   两个1位二进制数相加,没有考虑...
  • 数字图像分类

    千次阅读 2017-09-23 11:48:38
    一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图...
  • 基于 FPGA 的数字表示

    万次阅读 2018-11-13 17:35:41
    基于 FPGA 的数字表示 文章目录基于 FPGA 的数字表示零、计数系统框架一 、整数的表示1.1 二进制反码1.2 二进制补码二、 非整数值的表示2.1 定点二进制数2.2 定点量化2.4 小数部分截断2.5 一种不同的方法 Trounding...
  • 直流数字电压表设计

    千次阅读 2018-12-18 23:52:44
    本设计利用STC15F2K60S2单片机的A/D转换功能设计一个直流数字电压表,由A/D转换、数据处理及显示控制等组成,测量0-5V范围内的输入电压值,并由4位共阴8段数码管扫描显示,最大分辨率0.01V,误差在0.05V范围内。...
  • 数字图像的分类

    千次阅读 2016-05-21 16:22:52
    “0”代表黑色,“1”代表白色。由于每个像素(矩阵的每一元素)取值仅有0、1两种可能,因此计算机中的二值图像的数据类型通常为一个二进制位。 应用:文字、线条图的扫描识别(OCR)和掩膜图像的存储。2、灰度图像...
  • 1、输入:有一张写着数字的A4纸的图片(如下) 2、A4纸矫正 3、数字字符切割 4、用Adaboost或SVM训练一个手写数字分类器 5、识别并输出:连串数字,如“13924579693”与“02087836761”等 实现环境: Windows10 + ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 191,306
精华内容 76,522
关键字:

双代表数字几