• 从python开始学编程-vamei(1)


    编程与计算机

    概述

    计算机

    计算机五大结构:输入设备,存储器,控制器,运算器,输出设备
    存储器与运算器统称为CPU
    计算机操作系统负责管理计算机硬件资源->系统调用

    编程

    编程是人与计算机的互动方式,人通过编程来操纵计算机完成事情.
    编程范式:过程式编程,面向对象编程,函数时编程.python是多范式语言.

    语言思想(自我总结)

    • 从0到n
    • 简约:不要无用的东西,简化复杂的东西
    • 可读易理解
    • 追求效率:细分

    编程思想

    封装
    模块是比函数更高一级的,文件的复用

    • 复用
      • 变量提供的符号化,是代码复用的第一步
      • 函数封装语句,实现代码的复用
      • 引入模块,是文件级的代码复用

    python语言特点

    优点: 易读.实用,可拓展性好
    缺点:运行不如C
    特点:

    • 动态类型:python可以自由改变变量的类型,所以运行比c慢
    • 强缩进:缩进表示代码从属关系,大哥,小弟,同学 特别重要

    计算机会算术

    数值运算->计算器

    >>> 1+5 # 加
    6
    >>> 2-3 #减
    -1
    >>> 1*6 #乘
    6
    >>> 6/2 #除法默认浮点
    3.0
    >>> 6.0/3 #浮点
    2.0
    >>> 6/3.0 #浮点
    2.0
    >>> 18//4 #取商
    4
    >>> 18%4 #取余
    2
    >>> 4**2 #乘方
    16
    

    字符串的加法&乘法

    >>> 'hi'*2 #字符串乘法
    'hihi'
    >>> 'hi'+'hello' #字符串加法
    'hihello'
    

    逻辑运算->判断对错

    • 布尔值: True & False
    >>> True
    True
    >>> False
    False
    
    • 逻辑连词: 与(and),或(or),非(not)
    >>> True and True
    True
    >>> False and True
    False
    >>> False and False
    False
    >>> not True
    False
    
    • 判断表达式: 等于(==),大于(>),小于(<),小于等于,大于等于,不等于(!=)
    >>> 1 == 1
    True
    >>> 8.0 != 8.0
    False
    >>> 4 < 5
    True
    >>> 3 <= 3
    True
    
    • 从一到多->组合应用
    >>> 6>2 and 4>3 and 1>2 #多组判断
    False
    
    • 运算优先级问题(由高到低)
    ** 乘方
    * / 乘除
    + - 加减
    == >= <=  > < ! = 判断
    not and or 逻辑
    

    计算中,括号先行是万能的
    高优先级先运算,相同优先级从左到右

    >>> 4+2>=7 #优先级顺序
    False
    >>> 1>2 and 4<3 or 6>2
    True
    >>> 1>2 and (4<3 or 6>2)
    False
    
    • 数字无法判断正误
    >>> 4*2 and 6-3 # 数字无法判读
    3
    >>> 5 and 5 #数字无法判断
    5
    

    计算机记性好

    1. 计算机存储->变量革命:
      计算机存储数据是将数据存储在内存的单元格中,通过内存地址提取数据.内存分成一个单元格,每个格有一个内存地址,类型盒子与盒子编号.但是人们在使用中有三个问题,第一是内存地址太长,不好记,第二是在使用之前,无法确定盒子是空着的吗?第三是不同的类型的数据需要的盒子数目不同,盒子数目难以确定.因此,发明了变量,规定在创建变量时候,计算机分配内存出空着的单元格子便于装数据,不同类型的变量有不同数目的格子,通过变量名来提取数据.

    变量名直接参与运算是迈向抽象思维的第一步.数学上,符号代替数值的做法称为代数.-->变量提供的符号化表达方式是代码复用的第一步.

    >>> wood =5 # =表示赋值
    >>> wood = wood+5 # 计算机先执行赋值符号右边的运算,
    >>> print(wood)
    10
    >>> 6 = n #赋值号左边只能是变量名,赋值语句
    SyntaxError: can't assign to literal
    
    1. 变量的类型->由数据决定
    • 数据类型:整数(integer),浮点数(float),字符串(string),布尔值(boolean).
    >>> a = 100 #int
    >>> b = 100.0 #float
    >>> a = 'abc' #str,字符串就是一串字符串起来
    >>> a = True #bool
    

    python中变量的类型是可以自由变化的,变量的类型由存储的数据决定,被称为动态类型.

    • 变量类型:单容量变量,多容量变量:序列(list(列表),tuple(元组),)dict(词典)
    1. 使用变量
      1. 命名:变量的命名规则: 字母,数字,下划线,字母开头,为了增加可读性,变量名应有意义.不能与关键字相同31个
    >>> import keyword
    >>> print (keyword.kwlist)
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    
    2. 赋值语句:赋值语句先执行等号右边,等号左边只能是变量
    

    序列->存放有序的一列数据

    • 大容器.收纳多个数据.引出大容量型变量:序列&词典
      序列是有顺序的数据集合:一排站好的小兵.数列中的一个数据称为元素.序列中可以包含多个元素,也可以一个元素都没有.但一般很少创建空元祖,常见的是空列表.
    • 序列的分类
      列表(list),元祖(tuple)
      区别:列表中的元素是可变的,元祖中的元素是不可变,是固定的数据.
    • 创建序列:
    >>> example_list = [True,5,'smile'] # 创建列表
    >>> type(example_list) # 查看类型,type()函数查看类型
    <class 'list'>
    >>> example_tuple = (1,2,1.3,'love',False) #创建一个元祖
    >>> type(example_tuple) #查看类型
    <class 'tuple'>
    >>> kong_list = [] #创建空列表
    
    • 读取序列中的数据
      序列既然是存储数据的容器,那我们就可以读取存储的数据
      序列中的元素是有排列的,我们根据位置来找到对应的元素.序列元素的位置索引称为下标(index).序列中下标从0开始为了与C语言一致.
    >>> example_tuple = (1,2,1.3,'love',False) # 逗号表示并列
    >>> example_tuple[0]  #提取元祖中第一个元素
    1
    >>> example_list = [True,5,'smile']
    >>> example_list[2] #提取列表中第三个元素
    'smile'
    >>> nest_list = [1,[3,4,5]] #列表中嵌套列表
    >>> nest_list[1][2] #提取第二个列表中的第三个元素
    5
    
    • 引申读取列表中的数据
      除了通过下标找到单个元素以外,还可以范围引用
      序列名[下限:上限:步长] ,不包括上限
     >>> example_tuple[:5] #从下标0到下标4,不包括下标5的元素.冒号表示继续
    (1, 2, 1.3, 'love', False)
    >>> example_tuple[2:] #从下标2到最后一个元素
    (1.3, 'love', False)
    >>> example_tuple[0:5:2] #从下标0,2,4的元素.每间隔两个取值
    (1, 1.3, False)
    >>> example_tuple[0:5:2] 
    (1, 1.3, False)
    >>> a = example_tuple[0:5:2] 
    >>> type(a) # 范围引用结果还是元祖
    <class 'tuple'>
    >>> a
    (1, 1.3, False)
    
    • 尾部引用的语法
    >>> example_tuple[-1] # 序列最后一个元素
    False
    >>> example_tuple[1:-1] #序列第二个到倒数第二个元素->范围引用不包括上限
    (2, 1.3, 'love')
    
    • 变更列表中的数据
      通过下标对列表中单个元素进行赋值.元祖不可变.
    >>> example_list[1]=3.0 #更改列表中的第二个元素为3.0
    >>> example_list
    [True, 3.0, 'smile']
    

    词典

    词典是可以容纳多个无顺序数据的容器,词典允许用自定义(自由)的方式建立数据的索引,而不是采用下标(因为无顺序)

    >>> example_dict={'tom':11,'sam':57,'lily':100} #创建词典
    >>> type(example_dict)
    <class 'dict'>
    >>>example_dict={'hi':16,'hello':59,'free':99} #创建词典
    >>>print(example_dict['hi']) #提取词典元素,打印hi对应的值
    >>>example_dict['lilei']=59 #添加词典元素
    >>>print(example_dict)# 打印词典
    >>>example_dict={}#创建空词典
    16
    {'hi': 16, 'hello': 59, 'free': 99, 'lilei': 59}
    

    一般用字符串作为词典的键,但其他数据也可以.

    计算机懂选择

    背景

    开始时,计算机程序是按照顺序由上到下执行,我们需要编写大量重复的语句,因此,人们开始琢磨哪些更改语句执行顺序的方法,使得语句执行可以跳转.但是人们发现,有跳转的语句使得程序读起来像面条一样,很是费劲,所以简化发现,跳转主要功能就是选择&循环,人们创建了选择语句与循环语句.通过选择语句与循环语句的编写,使得计算机程序进入结构化的时代.

    if结构

    • if_else语句
    >>> i=3
    >>> if i>2:
    	print('hi')
    else:
    	print('why')
    hi
    
    • 补充
    1. else语句不是必须的(简约)
    2. if,elif多个选择分支,elif语句不限个数
    3. if嵌套if语句,分支选择

    计算机能循环

    • for循环
      for循环功能:
    1. 遍历序列
      for 元素 in 序列&词典
    #遍历词典,但是只能提取出值
    for i in {'hello':6,'hi':5}:
    	print(i)
    hello
    hi
    
    1. 循环指定次数 range()函数
      for i in range(次数)
    #循环打印1到9
    for i in range(1,10):
    	print(i)
    # 循环打印0到4,从0计数
    for i in range(5): #从0开始计数
    	print(i)
    
    1. while循环
      while后面紧跟着一个条件语句,当条件为时,才会开始循环.语句体中,应有一个更改条件变量的语句,达到终止循环,避免无限循环的目的.
    #while无限循环
    while True: 
    	print('hello world')
    # while条件循环
    while i>2: #无限循环
    	print('hi')
        
    i=3
    while i>2:#条件为真才会执行循环,语句体中应该有使得条件为假的语句
    	print(i) #从3开始打印数,到永远
    	i=i+1  
    
    i=9
    while i>2:#打印9到3
    	print(i) 
    	i=i-1# 使得条件为假
    
    1. continue语句与break语句
      continue语句:终止此次循环,直接下一次循环
      break语句:直接终止循环
    #continue:停止此次循环,进入下一次循环
    # 打印出9到5,到4时处于死循环状态
    i=9
    while i>2:#打印9到5
    	if i==4:
    		continue
    	print(i) 
    	i=i-1# 使得条件为假
    
    # 打印出9到5,到4时处于死循环状态
    i=9
    while i>2:#打印9到5
    	if i==4:
    		continue
    		i=i-1 #continue小弟语句不会执行
    	print(i) 
    	i=i-1# 使得条件为假
    
    
    # 打印出9到3,无4
    i=9
    while i>2:#打印9到5
    	if i==4:
    		i=i-1 #跳出continue循环的条件
    		continue
    	print(i) 
    	i=i-1# 使得条件为假
    
    i=9
    while i>2:#打印9到5
    	if i==4:
    		i=i-1 #跳出continue循环的条件
    		continue
    	print(i) 
    	i=i-1# 使得条件为假
        
    # break语句跳出循环
    #打印9到5
    i=9
    while i>2:#打印9到5
    	if i==4:
    		break#跳出循环
    	print(i) 
    	i=i-1# 使得条件为假
    
    #打印9到5与hello
    i=9
    while i>2:#打印9到5
    	if i==4:
    		break#跳出循环
    	print(i) 
    	i=i-1# 使得条件为假
    print('hello')
    while i>2:#打印9到5,条件变量值需要优先设置
    	if i==4:
    		break#跳出循环
    	print(i) 
    	i=i-1# 使得条件为假
    print('hello')
    
  • 相关阅读:
    PAT 1017 Queueing at Bank
    一句有意思的代码
    PAT 1031 Hello World for U
    PAT 1024 Palindromic Number
    PAT 1032 Sharing
    各显神通
    ZJU PAT 1023
    静夜,乱思
    PAT 1024 Palindromic Number
    虚函数表
  • 原文地址:https://www.cnblogs.com/yd916/p/12659996.html
Copyright © 2020-2023  润新知