挑战一天速通python基础语法

news2024/11/28 2:48:09

挑战一天速通python基础语法

文章目录

  • 挑战一天速通python基础语法
    • 0. 防止某人健忘
    • 1. 一些小点
    • 2. 输入输出
      • 2.1 输出
      • 2.2 输入
    • 3. 一些基础语法
      • 3.1 条件语句
      • 3.2 循环语句
      • 3.3 空语句
    • 4. 函数
    • 5. 列表和元组
      • 5.1 列表
      • 5.2 元组
    • 6. 字典
    • 7. 文件操作

再有一个月参加一个NTU的线上科研项目。。完全陌生的领域,所以咱来速通一下,不至于到时候过于狼狈。。仅做个人学习留念,不具任何参考价值

笑死,一打开pycharm还是上学期折磨我的填空实验,根本什么都看不懂,okay???

image-20221213152221311

0. 防止某人健忘

设置字体

image-20221213153351593

shift+F6可以统一更改变量名。

1. 一些小点

注释

# 我好想你呀,就像想上厕所,到家门口一样

文档注释'''也可

"""
 我好想你呀,就像想上厕所,到家门口一样
"""

一些算术运算符

  • ** 是求乘方. 不光能算整数次方, 还能算小数次方

  • // 是取整除法(也叫地板除). 整数除以整数, 结果还是整数(舍弃小数部分, 并向下取整. 不是四舍五入)

    image-20221213170421213

一些关系运算符

  • 返回值为布尔类型True/False

  • 关系运算符不光针对整数/浮点数进行比较, 还能针对字符串进行比较

    • 直接使用 == 或者 != 直接对字符串内容判定相等. (这一点和 C / Java 是不行的,否则比较的是字符串首元素地址/是否同一对象).
    • 字符串比较大小, 规则是 “字典序”。中文按字典序是没意义的,中文实际上是多个字节构成的比较大的数字进行比较的
    • 对于浮点数来说, 不要使用 == 判定相等.。这是因为浮点数在计算机中的表示并不是精确的! 在计算过程中, 就容易出现非常小的误差.

一些逻辑运算

and/or/not

  • a < b and b < c 这个操作等价于 a < b < c . 这个设定和大部分编程语言都不相同.

一些赋值运算符

多元赋值

a, b = 10, 20

基于多元赋值的变量交换,有意思

a = 19
b = 20
a,b = b,a
image-20221213172738292

像 C++ / Java 中, 存在 ++/ -- 这样的自增/自减运算符. Python 中则不支持这种运算. 如果需要使用, 则直接使用 += 1 或者 -= 1

++ – 最大的问题就是容易分不清前置和后置的区别. 这一点 Python 语法在设计的时候就进行了规避, 避免出现这种不直观, 并且容易混淆的语法.

其他

除了上述之外, Python 中还有一些运算符, 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符( & | ~ ^ << >>) 等.

暂时不做介绍啦~~

2. 输入输出

2.1 输出

输出的内容是混合了字符串和变量的

a = 10
print(f'a = {a}')
  • 使用 f 作为前缀的字符串, 称为 f-string —— 格式化字符串format,python3.6后才开始支持

  • 里面可以使用{ }来内嵌一个具体的变量/表达式

    image-20221213161804335

    Python 中还支持其他的格式化字符串的方法, 咱们此处只了解这个最简单的即可. 其他的暂时不做介绍.

2.2 输入

num = 0
num = input('你小子最好给我明白着点~')
print(f'num = {num}')
  • input 的参数相当于一个 “提示信息”, 也可以没有.

  • input 的返回值就是用户输入的内容. 是字符串类型. 因此,如果要用用户输入的内容进行算术运算,则需要先强转int()/str()等等

image-20221213162438424

3. 一些基础语法

3.1 条件语句

  1. if

    if expression:
     do_something1
     do_something2
    next_something #if代码块之外的内容
    

    if / else 命中条件后要执行的 “语句块”, 使用 缩进 (通常是 4 个空格或者 1 个 tab) 来表示

  2. if - elif - else

    if expression1:
     do_something1
    elif expression2:
     do_something2
    else:
     do_something
    
  3. if -else

    if expression:
     do_something1
    else:
     do_something2
    

3.2 循环语句

  1. while

    while 条件:
        循环体
    
  2. for

    • python 的 for 和其他语言不同, 没有 “初始化语句”, “循环条件判定语句”, “循环变量更新语句”, 而是更加简单
    • 所谓的 “可迭代对象”, 是一个特殊的变量,指的是 “内部包含多个元素, 能一个一个把元素取出来的特殊变量”

    打印1-10 ——

    for i in range(1, 11):
        print(i)
    
    • 使用 range 函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]

    打印2,4,6,8,10 ——

    for i in range(2, 12, 2):
        print(i)
    
    • 通过 range 的第三个参数, 可以指定迭代时候的 “步长”. 也就是一次让循环变量加几. 默认是1

    • range 的 步长 也可以设定成负数

  3. continue 和 break

    • continue 结束本次循环
    • break 结束全部循环

3.3 空语句

python对于代码的缩进要求比较高,如果啥也不写/只写注释,是不符合语法要求的 ——

a = int(input("请输入一个整数:"))
if a != 1:
    
else:
	print("hello")

想起来verilog也是,啥也不写时候必须写begin-end

pass 表示 空语句, 并不会对程序的执行有任何影响, 只是占个位置, 保持 Python 语法格式符合要求

a = int(input("请输入一个整数:"))
if a != 1:
 	pass
else:
    print("hello")

4. 函数

def 函数名(形参列表):
    函数体
    return 返回值
函数名(实参列表)           # 不考虑返回值
返回值 = 函数名(实参列表)   # 考虑返回值
  • 和 C++ / Java 不同, Python 是动态类型的编程语言, 函数的形参不必指定参数类型. 换句话说, 一个函数可以支持多种不同类型的参数,代替了函数重载

  • Python 中的函数, 可以给形参指定默认值. 带有默认值的参数, 可以在调用的时候不传参,其他注意事项同C++

  • 一个函数是可以一次返回多个返回值的,使用,来分割多个返回值.

    def getPoint():
        x = 10
        y = 20
        return x, y
    a, b = getPoint()
    
  • 如果只想关注其中的部分返回值, 可以使用 _ 来忽略不想要的返回值.

    def getPoint():
        x = 10
        y = 20
        return x, y
    _, b = getPoint()
    

关于变量的作用域

如果是想在函数内部, 修改全局变量的值, 需要使用 global 关键字声明

x = 20

def test():
    global x
    x = 10
    print(f'函数内部 x = {x}')
    
test()
print(f'函数外部 x = {x}')

如果此处没有 global , 则函数内部的 x = 10 就会被视为是创建一个局部变量 x, 这样就和全局变量 x 不相关了.

if / while / for 等语句块不会影响到变量作用域,也就是说,这只和函数语句块相关。

关键字形参

我们也可以通过 关键字参数, 来调整这里的传参顺序, 显式指定当前实参传递给哪个形参.

def test(x, y):
    print(f'x = {x}')
    print(f'y = {y}')
test(x=10, y=20)
test(y=100, x=200)

5. 列表和元组

这俩玩意就相当于数组

元组和列表相比, 是非常相似的, 只是列表中放哪些元素可以修改调整, 元组中放的元素是创建元组的时候就设定好的, 不能修改调整**.**

5.1 列表

创建列表主要有两种方式. [] 表示一个空的列表

alist = [ ]	   # 比较推荐这个,因为看起来简单
alist = list() # list内建函数
  • 可以在[]中指定列表的初值

  • 可以直接使用 print 来打印 list 中的元素内容

  • 列表中存放的元素允许是不同的类型 (这一点和 C++ Java 差别较大).

  • len 函数可以获取到列表的元素个数.

访问列表

可以通过下标访问操作符 [ ] 来获取到列表中的任意元素.

  • 可读可写

  • 下标可以取负数. 表示 “倒数第几个元素”

    image-20221215104009820

列表切片

通过切片, 则是一次取出一组连续的元素, 相当于得到一个 子列表

  • 使用 [a:b] 的方式进行切片操作,左闭右开

  • 切片操作中可以省略前后边界

  • 切片操作还可以指定 “步长” , 也就是 “每访问一个元素后, 下标自增几步”

    alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    print(alist[::1])
    print(alist[::2])
    
  • 切片操作指定的步长还可以是负数, 此时是从后往前进行取元素. 表示 “每访问一个元素之后, 下标自减几步”

  • 如果切片中填写的数字越界了, 不会抛异常. 只会尽可能的把满足条件的元素过去到.

遍历链表

  • for 循环
alist = [1, 2, 3, 4]
for elem in alist:
    print(elem)

增删查

alist = [1, 2, 3, 4]
alist.append('hello')
print(alist)

alist.insert(1, 'hello')
print(alist)

alist = [1, 2, 3, 4]
alist.pop()
print(alist)

alist.pop(2) #按照下标
print(alist)

alist.remove(2) #按照值
print(alist)

  • 使用in操作符, 判定元素是否在列表中存在. 返回值是布尔类型.
  • 使用index方法, 查找元素在列表中的下标. 返回值是一个整数. 如果元素不存在, 则会抛出异常.
alist = [1, 2, 3, 4]
print(2 in alist)
print(10 in alist)

print(alist.index(2))
print(alist.index(10))

列表的连接

  • 使用 + 能够把两个列表拼接在一起. 此处的 + 结果会生成一个新的列表. 而不会影响到旧列表的内容.

  • 使用 extend 方法, 相当于把一个列表拼接到另一个列表的后面. +=效果和它相同

    alist.extend(blist)
    

它的优势有以下两方面:

  • 你有一个列表, 现在需要调用一个函数进行一些处理. 但是你有不是特别确认这个函数是否会把你的列表数据弄乱. 那么这时候传一个元组就安全很多
  • 我们马上要讲的字典, 是一个键值对结构. 要求字典的键必须是 “可hash对象” (字典本质上也是一个hash表). 而一个可hash对象的前提就是不可变. 因此元组可以作为字典的键, 但是列表不行.

5.2 元组

元组的功能和列表相比, 基本是一致的.

atuple = ( )
atuple = tuple()

元组不能修改里面的元素, 列表则可以修改里面的元素,因此

  • 读操作,比如访问下标, 切片, 遍历, in, index, + 等, 元组也是一样支持的.
  • 写操作, 比如修改元素, 新增元素, 删除元素, extend 等, 元组则不能支持.

当一个函数返回多个值的时候. 返回值类型就是

6. 字典

字典是一种存储 键值对 的结构.

字典创建

a = { }
b = dict()
  • 键值对之间使用 , 分割,键和值之间使用 : 分割. (冒号后面推荐加一个空格).
  • 使用 print 来打印字典内容

为了代码更规范美观, 在创建字典的时候往往会把多个键值对, 分成多行来书写.

student = {
    'id': 1,
    'name': 'zhangsan'
}
  • 最后一个键值对, 后面可以写 , 也可以不写.

查找key

  • 使用 in (notin)可以判定 key 是否在 字典 中(不)存在. 返回布尔值. 不能用于查找 value

    student = {
        'id': 1,
        'name': 'zhangsan',
    }
    print('id' in student)
    
  • 使用 [ ] 通过类似于取下标的方式, 获取value. 只不过此处的 “下标” 是 key. (可能是整数, 也可能是字符串等其他类型).;如果 key 在字典中不存在, 则会抛出异常.

    student = {
        'id': 1,
        'name': 'zhangsan',
    }
    print(student['id'])
    

对于字典,in/[]获取value是比较高效的,因为用了特殊的数据结构“哈希表”,但是对列表来说,需要遍历所以是较为低效的。

新增/修改元素

使用 [ ] 可以根据 key 来新增/修改 value

  • 如果 key 已经存在, 对取下标操作赋值, 即为修改键值对的值.
  • 如果 key 不存在, 对取下标操作赋值, 即为新增键值对

删除元素

使用 pop 方法根据 key 删除对应的键值对.

student.pop('score')

遍历字典元素

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80
}
for key in student:
    print(key, student[key])

字典并非单纯的哈希表

取出所有的key和value

  • 使用 keys 方法可以获取到字典中的所有的 key
print(student.keys()) 

此处 dict_keys 是一个特殊的类型, 专门用来表示字典的所有 key. 大部分元组支持的操作对于dict_keys 同样适用.

  • 使用 values 方法可以获取到字典中的所有 value
print(student.values())

此处 dict_values 也是一个特殊的类型, 和 dict_keys 类似.

  • 使用 items方法可以获取到字典中所有的键值对.
print(student.items())

此处 dict_items 也是一个特殊的类型, 和 dict_keys 类似.

合法的 key 类型

字典本质上是一个 哈希表, 哈希表的 key 要求是 “可哈希的”, 也就是可以计算出一个哈希值.

可以使用 hash 函数计算某个对象的哈希值,比如:

print(hash(0)) 			#整数
print(hash(3.14)) 		#浮点数
print(hash('hello')) 	#字符串
print(hash(True)) 		#布尔值
print(hash(()))   		#元组

列表/字典无法计算哈希值

7. 文件操作

  1. 打开文件

    使用内建函数 open 打开一个文件

    • 第一个参数是一个字符串, 表示要打开的文件路径
    • 第二个参数是一个字符串, 表示打开方式. 其中r表示按照读方式打开. w 表示按照写方式(清空原有内容)打开. a表示追加写方式打开.
    f = open('d:/test.txt', 'r')
    
    • 如果打开文件成功, 返回一个文件对象. 后续的读写文件操作都是围绕这个文件对象展开.

    • 如果打开文件失败(比如路径指定的文件不存在), 就会抛出异常.

    • 显式的指定为和文本相同的字符集

      f = open('d:/test.txt', 'r', encoding='utf8')
      
  2. 写文件

    f = open('d:/test.txt', 'w')
    f.write('hello')
    f.close()
    
  3. 读文件

    • 使用 read 方法完成读操作. 参数表示 “读取几个字符
    f = open('d:/test.txt', 'r')
    result = f.read(2)
    print(result)
    f.close()
    
    • 如果文件是多行文本, 可以使用 for 循环一次读取一行.
    f = open('d:/test.txt', 'r')
    for line in f:
        print(f'line = {line}', end='') #手动去掉换行
    f.close()
    
    • 使用 readlines 直接把文件整个内容读取出来, 返回一个列表. 每个元素即为一行.
    f = open('d:/test.txt', 'r')
    lines = f.readlines()
    print(lines)
    f.close()
    
  4. 关闭文件

    f.close()
    
  5. 使用上下文管理器

    打开文件之后, 是容易忘记关闭的. Python 提供了 上下文管理器 , 来帮助程序猿自动关闭文件

    with open('d:/test.txt', 'r', encoding='utf8') as f:
        lines = f.readlines()
        print(lines)
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MicroPython-On-ESP8266——8x8LED点阵模块(5)自制贪吃蛇游戏

MicroPython-On-ESP8266——8x8LED点阵模块&#xff08;5&#xff09;自制贪吃蛇游戏 1. 背景知识 连续折腾了一段时间的8x8点阵屏模块&#xff0c;从基本原理到驱动它显示滚动图案效果&#xff0c;常用的功能都使用到了。系列如下&#xff1a; MicroPython-On-ESP8266——8…

文件下载漏洞详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是文件下载漏洞详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备…

速锐得视角—数字化能源新时代的影响挑战趋势

数字化正在改善能源系统的安全性、生产力、普及率和可持续性&#xff0c;但是同时数字化也引发了新的安全和隐私风险&#xff0c;此外&#xff0c;市场、企业和工作岗位也受数字化的影响&#xff0c;改变工种结构&#xff0c;在数字化新时代来临前&#xff0c;正在发生一些细微…

计算机毕业设计java+springboot+vue学生宿舍管理系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以学生宿舍管理系统的实际应用需要出发,架构系统来改善现学生宿舍管理系统及出入登记平台工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的…

数字IC验证快速入门,你想知道的干货都在这里

网上有很多人咨询关于数字IC验证的行情&#xff0c;下面大多数回答都说薪资高、机会多、发展好。 确实&#xff0c;一款芯片从立项到流片生产需要经过层层自测和验证&#xff0c;否则芯片注定是失败。可以说&#xff0c;IC验证是IC设计的关键所在。 验证的重要性 这些年来&a…

020 | 我国河长制运行中的公众协同参与机制研究 | 大学生创新训练项目申请书 | 极致技术工厂

研究目的营造全社会共同关心和保护河湖的良好氛围、拓宽公众参与渠道 公众参与河湖保护具有自身优势。公众是河湖保护的坚实力量&#xff0c;探求河长制中的公众参与机制&#xff0c;营造全社会关心保护环境的良好社会氛围是改善流域生态环境的根本举措。协同治理的发展以社会壮…

为什么要学习rust

一、rust的实现、优点 实现&#xff1a;明确/&#xff08;零成本&#xff09;抽象/赋能优点&#xff1a;兼具高性能/安全性/表达力 明确&#xff1a;rust不像其他的语言&#xff0c;这些编程语言为了照顾初学者&#xff0c;它会把很多基本概念隐藏在基本语法之后&#xff0c;它…

数图互通高校房产管理——公积金补贴管理

数图互通房产管理系统在这方面做得比较全面&#xff1b; 1、公积金管理 1.1 公积金开户申请、审核 新进入学校的职工、博士后(含特别研究助理)公积金开户申请老师登录平台进行公积金开户申请&#xff0c;申请页面先选择人员类型“在职、项目、博士后、特别研究助理”,由房产…

Oracle视图、索引与存储过程

目录 一、视图 二、索引 三、存储函数 (一)存储函数的语法结构 (二)案例 1.输入ID&#xff0c;返回NAME 2.传入数字&#xff0c;能够被2整除就是偶数&#xff0c;不能被2整除的就是奇数 3.对两个数字求和&#xff0c;对和判断奇偶数 4.判断SCOTT用户下&#xff0c;工资…

m基于鱼群优化算法的的三维场景下人员疏散系统matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工鱼群优化算法&#xff0c;模仿鱼群的行为特点而设计的一种寻优策略。人工鱼群算法(Artificial Fish Swarm Algorithm&#xff0c;AFSA)是Li Xiao-lei在2002年提出的(Yazdani, Toosi, & M…

全网惟一面向软件测试人员的Python基础教程-在Python中怎么干倒字符串?

全网惟一面向软件测试人员的Python基础教程 起点&#xff1a;《python软件测试实战宝典》介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你知道Python代码是怎样运行的吗&#xff1f; 第四章 Python数据类型中有那些故事呢&#xff1f;…

邂逅Vue3和Vue3开发体验

文章目录01-邂逅Vue3和Vue3开发体验Vue3带来的变化如何使用Vue方式一&#xff1a;CDN引入方式二——下载和引入计数器案例原生实现Vue实现MVVMtemplate写法一写法二datamethod其他属性01-邂逅Vue3和Vue3开发体验 Vue3带来的变化 如何使用Vue 方式一&#xff1a;CDN引入 <d…

Hadoop 综合实训(编写ing)

文章目录一&#xff0c;显示文件内容&#xff08;一&#xff09;启动hadoop服务&#xff08;二&#xff09;创建并上传本地文件&#xff08;1&#xff09;创建students.txt文件&#xff08;2&#xff09;上传文件到HDFS&#xff08;三&#xff09;创建Maven项目&#xff1a;Dis…

windows11执行python没有任何反应或拉起应用商店的解决办法

1 是什么&#xff08;现象&#xff09; 高高兴兴的用上新电脑&#xff0c;系统Windows11&#xff0c;结果发现用power shell执行python姿势不对。 python bioParser.py 点击Enter&#xff0c;结果秒结束&#xff01;而我的python脚本明明有很多打印&#xff01; 如果只执行py…

服务机器人“大战”进入下半场,竞争焦点变了

对于机器人企业而言&#xff0c;“卖出去”是商业本质。 如何“卖出去”&#xff0c;往往是企业之间的竞争焦点&#xff0c;它也许是技术&#xff0c;也许是营销&#xff0c;但随着服务机器人大战进入下半场&#xff0c;服务机器人的竞争焦点正在发生根本上的改变。 竞争焦点…

Docker:基于Docker对中间件进行配置、安装和使用操作合集

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、rabbitmq启动rabbitmq设置rabbitmq用户进入rabbitmq容器内部设置外界访问用户二、mongodb安装mongo启动mongodb配置及使用mongodb三、Redis1.安装redis2.启动…

同一台服务器上多版本PHP切换(apache2 php8.2 php7.2)

我们有时会在同一台服务器上搭建多个版本的PHP&#xff0c;用来测试不同的程序。可是如何在多个版本之间切换呢&#xff1f;本文以ubuntu1804Server为例给大家进行讲解示范。 环境 ubuntu1804server 4.15.0-200-genericapache2php 7.4php 8.2 1.安装apche2 apache2的安装非…

【项目管理】项目中的进度管理,你知道多少?

有效实施项目进度计划&#xff0c;是项目成功的重要保障&#xff0c;项目进度管理也是每位项目经理都非常重视的问题。 项目中的进度管理可以帮助您了解项目当前进度&#xff0c;估计项目是否能顺利完成。 项目管理就是通过的对知识、技能、工具的运用对项目活动进行管理&am…

星环数据云平台 TDC 3.1 发布,新增滚动重启、存储回收站等八大核心功能

近日&#xff0c;星环数据云平台 Transwarp Data Cloud &#xff08;以下简称 TDC&#xff09;正式推出 3.1 版本。TDC 是采用云原生技术&#xff0c;融合星环科技全系产品打造的统一 PaaS 平台&#xff0c;可以为企业提供数据流通交易平台、企业湖仓一体数据湖、企业数据中台、…

Redis框架(十四):大众点评项目 基于Redis实现点赞功能实现

大众点评项目 基于Redis的点赞功能实现需求&#xff1a;基于Redis实现点赞功能实现业务实战总体代码展示总结SpringCloud章节复习已经过去&#xff0c;新的章节Redis开始了&#xff0c;这个章节中将会回顾Redis实战项目 大众点评 主要依照以下几个原则 基础实战的Demo和Coding…