python基础学习

  程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令。
  虽然借助 Siri(Apple)、Google Now(Android)、Cortana(Microsoft)等技术,我们可以使用汉语直接告诉计算机做什么,比如“Siri,打开酷狗音乐”,但使用过这些系统的读者都知道,它尚未完全成熟,再加上我们语言充满了模糊和不精确因素,使得设计一个完全理解人类语言的计算机程序,仍然是一个有待解决的问题。

  为了有效避开所有影响给计算机传递指令的因素,计算机科学家设计了一些符号,这些符号各有其含义,且之间无二义性,通常称它们为编程语言。编程语言中的每个结构,都有固定的使用格式(称为语法)以及精确的含义(称为语义)。换句话说,编程语言指定了成套的规则,用来编写计算机可以理解的指令。习惯上,我们将这一条条指令称为计算机代码,而用编程语言来编写算法的过程称为编码。

  这样说编程语言可能有点抽象,其实编程语言是一种能让人类与计算机进行沟通交流的语音工具,人类通过写代码的方式控制计算机完成自己想要的操作


 

  • 输入输出语句 IO
    # print --> 输出语句,内置函数,能让计算机输出一句话
    print("你好,python")
    # input --> 输入语句,内置函数,能让计算机接受你从键盘输入的一段话
    # input(提示语)
    input("请输入你的姓名")
  • 变量:

  可以用来存储数据的容器——存储一/多个值的数据容器
  变量命名规范:
  1.由数字,字母,下划线组成
  2.不能数字开头/不能用特殊符号
  3.大小写分明 Name name
  4.见名知意,尽量简单粗暴 --> 驼峰命名法/匈牙利命名法
  5.不能取关键字以及不要取内置函数名

  • 数据类型:    

  主要有数值类型,序列类型和散列类型

  • 数值类型:

  int 整型/整数 0,1,2,520,1314,-10086
  float 浮点型/小数 6.66 5.20 -13.14
  bool 布尔类型 True False 布尔类型一般用来做条件判断.判断一个东西为真/假 True为真,也可以表示数值1 False为假,也表示数值0
  

  • 序列类型:

  str 字符串引号包裹起来的数据,可以用单/双/三引号来保存数据.但是不能混用.
  name = "博客园"
  list 列表中括号包起来的数据,可以存放多个,多种不同类型的数据.并且里面的值可以修改
  names = ["张三","李四","王五","赵六"]
  tuple 元组小括号包起来的数据,可以存放多个,多种不同类型的数据.里面的值不可修改
  names = ("张三","李四","王五","赵六")
  如果要存储多个数据,并且会修改那就用列表来保存,如果不希望被修改就用元组来保存
  有个字符串 name = "钱七张三"
  序列类型的特性:
  1.下标:
  下标就是坐标的意思,类似于酒店的门牌号,让我们的数据有位置的概念,我们可以通过对应的下标访问到找到对应的数据
  下标的值是从0开始计算的: 0 1 2 3 4
  下标也支持负向取值 -1 -2 -3 -4. -1就是最后一位 -2就是倒数第二位
  2.索引
  通过下标来获取指定的数据
  序列名[下标]

name='张三李四王五'
#     0 1 2 3 4 5
print(name[1]) #取出三字

 

  3.切片

  把多个数据拆分取出来.有两个值 1.起点值 2.终点值
  有个特性:取头不取尾,终点值实际上是到前一位,比如终点值写的是5,实际上是取到下标位置为4的数据
  

name = "王五张三"
print(name[1:4]) # 输出五张三
print(name[:2]) # 输出王五

  如果起点值/终点值空着不写,默认是全部取

name = "王五张三"
print(name[:4])  # 输出王五张三
print(name[1:])  # 输出五张三
print(name[:])   # 输出王五张三

  4.步长
  正常取值都是一个个的取出来,步长就可以设置一次性跨几个值
  

num = "123456789"
#序列名[起点:终点:步长]
print(num[::2]) # 一次跨2位取数据.输出结果为13579
print(num[::-1]) # 步长设置为-1.就可以倒过来输出序列类型数据,结果为987654321

 

 

  • 散列类型:

  set 集合 用大括号包裹起来的数据,里面的数据 1.不会重复 2.可以进行逻辑判断
 

set1 = {1,1,1,2,3,4,6,7,8,10,13}
print(set1)
#输出{1, 2, 3, 4, 6, 7, 8, 10, 13}

  重复的数据是不会被保存的.最后输出的时候都是唯一的数据
  1.去重,不会存重复数据
  2.逻辑判断(交并差集)
  dict 字典 用大括号包裹起来的数据,里面的数据是以键值对的方式来存储
  键值对 key:value 键:值 键值对的概念就是两者之间存在解释/映射关系
  键值对之间用,逗号隔开
  

kylin = {"姓名":"张三","身高":177.5,"是否男性":True }
#字典里取值是通过键名.比如要输出"张三"
print(kylin["姓名"])

  方法:
  python内置的一些功能函数.能够实现各种功能,比较常见的就是增删改查.
  让我们可以对数据更好的实现操作
  格式化输出:
  为了帮助我们更好的输出一些带有变量的数据,或者特定格式数据的输出方式.
  f-str --> 在字符串前加f,把要输出的变量用{}包起来

name = "张三"
age = 18
print(F"大家好,我叫{name},我今年{age+6}岁")
#输出结果为,大家好,我叫张三,我今年24岁

 

  %占位符 --> 在字符串用占位符先占个位置,后续再用实际的值来代替

name = "张三"
age = 18
print ("你好,我叫%s,我今年%d岁"%(name,age))
# 输出结果为 你好,我叫张三,我今年18岁

  %s 字符串

  %d 整型

  %f浮点型(默认小数点6位)
  %.2f 输出浮点值,小数点到后两位
  format --> 在字符串中用{}先占个位置,后续再用实际的值来代替

name = "张三"
age = 18
print ("你好,我叫{},我今年{}岁".format(name,age))
# 输出结果为 你好,我叫张三,我今年18岁

  转义字符:
  带有特定功能的字符,表现形式为\后面加上指定的字符
  \n --> 换行
  \t --> 制表符,四个空格
  \\ --> 正常输出一个\
  \a --> 系统提示音
  \' --> 正常输出一个引号
  取消转义 --> 在包含了转义字符的字符串前,加个r --> 原始字符串

复制代码
print(r"asdasd \n asuyd \t asduyasd")
print("asdasd \n asuyd \t asduyasd")
#第一行代码输出结果为 asdasd \n asuyd \t asduyasd
"""第二行代码输出结果为:
asdasd 
 asuyd      asduyasd"""
复制代码

 

  • 流程控制语句:

  1. if 语句

选择执行/分支语句 --> if --> 判断语句,如果条件满足,就执行对应的代码
  python的代码块,代码区域,地盘的地盘是通过缩进来表示的.

  单分支:如果满足条件就执行代码,不满足就没事发生

  if 判断条件:
  代码块

if 成绩>90:
print("好厉害")

  2.if....else语句

  双分支:如果满足条件就执行if里的代码块,不满足就执行else代码块

  if 判断条件:
  代码块
  else:
  代码块

tq=input("请输入天气:")
if tq=='下雨':
    print("带伞")
else:
    print("不带伞")

  3.if....elif....else语句

  多分支: 如果满足条件就执行if里的代码块,不满足继续往下判断是否满足elif的条件.都不满足就执行else代码

  if 判断条件:
  代码块
  elif 判断条件:
  代码块
  else:
  代码块

复制代码
成绩 = int(input('请输入你的成绩:'))
if 成绩 > 90:
    print("自助餐")
elif 成绩 > 70:
    print("KFC")
else:
    print("加油,努力.")
复制代码

  if 如果 elif 或者 else 否则


  运算符:
  and: 条件都满足时,才为真,才执行
  语文"和"数学都90分以上 --> 带你下馆子
  or: 条件满足其中一个,就为真,就执行
  语文"或"数学90分以上 --> 带你下馆子
  in : 成员运算符,判断该数据在不在另外一个数据集合/容器里,得到结果为布尔类型
  li = [1,2,3,4,5] 1 in li
  结果为True.因为li里面有1
  not/!: 杠精,取反.什么都和你反着来,你对了它就给你弄错,你错了它反而给你弄对

复制代码
语文成绩 = int(input('请输入你的语文成绩:'))
数学成绩 = int(input('请输入你的数学成绩:'))
if 语文成绩 >90 and 数学成绩> 90:
    print("带你下馆子")
elif 语文成绩 >90 or 数学成绩> 90:
    print("带你吃街边摊")
else:
    print("加油,努力.")
复制代码

  循环执行: while/for 重复执行代码,条件为真(True)就一直执行,为假(False)就结束循环

    wile循环
  while 循环条件:
  代码块

抄书 = 0
while 抄书 <= 100:
    print(抄书)
    抄书 += 1  # 相当于 抄书 = 抄书+1

 

  用while一定要注意细节,注意更新循环条件


  for循环

  作用和while其实类似,但是for在知道循环次数,或者进行数据遍历的时候会更方便
  1.for 变量 in 可迭代对象
  2.for 变量 in range(起点,终点)
  3.for 变量 in range(起点,终点,步长)
  

复制代码
li = [1,2,7,5,1,True]
for i in li:
    print(i)
for i in range(20):
    print(i)
for i in range(0,101,2):
    print(i)
复制代码

 

  break --> 结束本次循环
  continue --> 跳过本次循环

复制代码
for i in range(100):
    if i == 10:
        continue
    print(i)
    if i == 70:
        print("over")
        break
复制代码
  • 函数基础:

  函数的作用: 把一堆代码包裹起来,用使用的时候直接调用该函数即可
  类似于生活中的单点菜与拿套餐

  函数的使用分为两步:
  1.定义 def
  2.调用 函数名()

  定义函数:
  def 函数名():
  代码块

  def 函数名():
  pass # 空函数,避免报错

  调用函数:
  函数名() # 直接调用函数,运行里面的代码
  print(函数名()) # 调用函数,并输出里面的返回值

  带参函数:
  形参: 走个形式,先占个位置 --> 类似于占位符,现实中的车票
  实参: 实际使用,在运行的时候会取代形参

  定义带参函数:
  def 函数名(参数1,参数2):
  代码块

  # 必备参数,有几个形参就得有几个实参

def add(a,b):
    print(a+b)
add(35,70)  #输出105

 

  # 默认参数,在定义形参时,就已经给参数赋值了.但值可以被覆盖,定义好的参数要写在右边  

def talk(age,name="张三"):
    print(f"我叫{name},我今年{age}岁")
talk(18)
# 输出我叫张三,我今年18岁

 

 

 

  # 不定长参数1:可以接受多个参数.传输过来的数据以元组的形式来接受.特征为形参名前有1个* 一般形参叫 *args 

def fun(*args):
    print(args)
fun(True, 666, "天气好", "注意防晒")
#输出(True, 666, '天气好', '注意防晒')

 

 

 

  # 不定长参数2:可以接受多个参数.传输过来的数据以字典的形式来接受.特征为形参名前有2个* 一般形参叫 **kwargs

def fun(**kwargs):
    print(kwargs)
fun(name="张三")
#输出{'name': '张三'}

 

  返回值:return

  可以这么理解,函数里面的代码块,是过程,返回值结果
  有的时候我们只需要了解知道代码块过程.那就正常调用这个函数
  当需要结果的时候,就可以print输出或者用变量 = 函数名()的方式来赋值
  def 函数名():
  return 返回值

def add(a,b):
    return a+b
sum1 = add(666,520)
print(sum1)
#输出结果为1186

 

  如果返回值未定义,默认为None 为空

 

  • 函数进阶:

  函数对象: 把函数当成一个单纯的数据来使用
  1.用函数来赋值: (1).把函数赋值给一个变量 (2).把函数的返回值赋给变量
  2.可以用函数作为返回值
  3.函数可以作为参数放到字典,列表,元组,集合里
  4.函数可以作为参数,传入给别的函数

  名称空间/作用域:
  作用域: 一个数据,能够使用的范围
  全局作用域: 整个程序里都可以使用
  局部作用域: 在程序中的部分位置才能使用(在特定函数里)

  名称空间:
  存放存储程序中所有名字的地方: 变量名/函数名
  内建名称空间: 存放python内置的函数,模块, 会随着python程序运行而产生,print,input,type
  全局名称空间: 存储自己定义的外层变量名,函数名, 也是会随着python程序运行而产生
  局部名称空间: 存储自己在函数内定义的变量名,函数名,形参. 会随着函数的调用而产生

  global --> 提权,把局部内的变量,变成一个全局变量
  nonlocal --> 降权,把变量进一步的私有化
  函数总结:
  把一些常用的代码封装包装起来,方便后续的使用.是核心灵魂知识点!!!

  闭包:
  闭: 封闭,嵌套函数的内层函数
  包: 作用域
  闭包: 在一个嵌套函数中,用内层函数来操作数据,得到结果,外层函数来返回.
  优点:间接修改/操作数据.保障代码的稳定性安全性

  def fun(a,b):
  def add():
  return a+b
  return add

  def 老板(需求1,需求2):
  def 员工():
  干活
  return 员工
  万恶的老板负责揽活, 卑微的员工负责干活. 真正做事的是员工/内层函数
  得到结果的是外层函数/老板

  装饰器: 间接添加功能
  在不修改源代码,调用方式的前提下,给函数添加一些特定的功能
  实现原理就是通过闭包. 把要添加功能的函数传递进来.在内层函数调用,并在内层函数写上对应增加的功能. 最后把内层返回返回出去
  迭代器 iter:
  用来对一串数据进行更新迭代的操作
  白话版: 把很多的数据,一个接一个/有顺序的输出出来
  for循环的实现就是基于迭代器.把一个有很多数据的对象.转换成迭代器
  然后把里面的数据按照指定的规则输出
  生成器 yield:
  一个函数里有yield就是生成器
  生成器的本质就是一个迭代器的变体.用来帮助我们生成一个自定义的迭代器.
  自己指定规则,生成指定的数据,而不用自己手动的一个个声明变量.
  生成器常用语生成器表达式来进行实现
  模块与包:
  模块指的就是一个python文件. 它的文件名就是它的模块名
  kylin.py 它的模块名为kylin 不带.py
  可以把一些常用的功能,写到一个模块里,在需要的时候导入即可灵活使用

  导入模块 --> import 导入
  ipmort 模块名
  ipmort win32gui
  ipmort time

  当你导入模块后程序会自动的做三件事:
  1.运行该模块里的所有代码,确保没有异常
  2.生成一个名称空间,该名称空间与模块名同名
  3.在当前的运行的程序中,连接刚刚生成的名称空间.后续就可以通过模块名.的方式来操作模块的数据
  模块名.变量名
  模块名.函数名
  模块分为三种:
  1.内置模块 --> python自带的功能模块,不需要另外下载
  2.第三方模块 --> 他人写好上传的模块. 使用之前需要通过pip下载
  3.自定义模块 --> 自己写的python模块
  下载模块: 在cmd中输入
  pip install 模块名
  pip install pygame
  别名操作:
  当一个模块名过长或不好记的时候,可以用as关键字取别名
  import 模块名 as 别名
  import win32gui as gui
  包:
  包属于模块的一种变体,表现形式为一个文件夹里有个名为__init__的文件.
  作用就是更好的帮助我们统一管理一些功能相同的代码
  并且当导入包内的模块时,__init__.py里的代码会自动执行
  所以可以在__init__里面写上一些关于这个包/里面模块的一些说明,或属性配置
  main:
  python有一个自带的方法叫__name__.作用就是可以判断文件所处的状态
  当文件是以程序的身份执行时,__name__的值为__main__
  当文件是以模块的身份执行时,__name__的值为模块名
  所以可以写一个if判断,把一些杂七杂八的代码放到if里.当这个文件是作为程序运行时才会出现
  if __name__ == '__main__':
  pass
  字符编码:
  计算机最底层的字典. 类似于人类的学员名册,每个人都有对应的学号.计算机同样.每个字符在底层都有对应的序号
  1.目前世界上最主流的字符编码为 utf-8
  2.一个程序/文件是用什么编码写的.最好就是用对应的编码去读取.否则可能会乱码
  文件操作:
  三要素: 1.打开文件 2.操作文件 3.关闭文件
  为了规避忘记关闭文件所导致的资源损耗,更推荐用with open来写
  with open('文件路径+文件名','操作方式',encoding = '字符集') as f:

  with open("别睡觉.txt",'w',encoding='utf-8') as f:
  f.write("别睡觉")

  操作方式:
  w = write写入
  r = read读取
  a = append追加
  b = byte字节码
  t = text文本
  常用模块:
  time: 时间模块
  random: 随机模块
  os 操作系统模块
  sys 系统模块
  json 序列化文件模块
  hashlib 哈希模块,是一种算法,可以生成一个加密值!!!

1. if 语句

posted @   飘戱翲橼  阅读(102)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示