一、Python交互模式(终端上进行)

python # 进入到Python交互模式,提示符是 >>>
exit() # 退出Python交互模式
python xxx.py # 执行名为xxx的python文件,注意要先使用cd指令切换到xxx.py所在目录下 e.g:
>>> 2**10 #2**10 == 2^{10}
>>> 1024

二、Python基本语法

1.输出

print()
e.g: print('hello , world')
print('The quick brown fox', 'jumps over', 'the lazy dog')
#print函数可以接受多个字符串,并依次打印每个字符串,遇到逗号“,”输出一个空格
#字符串的相关输出格式,见后字符串部分

#print函数也可以打印整数或计算结果
print(300)
print(100+200)
print('100 + 200 =', 100+200)

2.输入

(变量名) = input()
e.g:
name = input()
#我们输入内容将存至name变量中,在交互模式下我们可以直接输入name,就可以查看name变量中的值啦,当然我们也可以通过print()函数来查看,即:
print(name)
#input()返回的数据类型为str
#当时两种方式还是有区别的,见下图

3.基础常识

# # -- 注释,相当于C++中的‘//’
# : -- 语句以冒号:结尾时,缩进的语句视为代码块,相当于C语言中的{},通常是以4个空格为一次缩进,即一个tab键
# import math == include <cmath>
# 另外,Python是大小写敏感的,这点需要注意

4.数据类型

1.整数--Python可以处理任意大小的整数,高精度!

注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648-2147483647

Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。

2.浮点数--1.23、1.23e9==1.23*10^9

整数运算永远是精确的(除法也是精确的!),而浮点数运算则可能会有四舍五入的误差。

3.字符串--单引号‘和双引号“括起来的文本

(1)在字符串中若包含单/双引号,需采用转义字符‘\’来标识。
e.g:
'I\'m OK!!' --> I'm OK!!
#r'xxxxx' -->表示‘’内部字符串默认不转义
e.g:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
(2)Python允许用'''...'''的格式表示多行内容
print('''line1
... line2
... line3''')
line1
line2
line3
#在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入,注意...是提示符,不是代码的一部分
len()--计算字符串所占字符/字节数
(3)字符串的编码(了解)
(4)字符串的格式化

常见的占位符有:

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

其实还有比如指定是否补零与整数、小数的位数。如%02d %.2f

>>> 'Hello, %s' % 'world'
'Hello, world'
#只有一个%?时,括号可省略
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
#特别的,若字符串中‘%’是一个普通字符,我们需采用‘%%’来表示%
>>>'growth rate: %d %%'%7
'growth rate: 7 %'

(了解)另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……,不过这种方式写起来比%要麻烦得多:

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'

最后一种格式化字符串的方法是使用以f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换:

>>> r = 2.5
>>> s = 3.14 * r ** 2 #3.14*(r^2)
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62

4.布尔值--True、False

可以进行 or(或)and(与)not——(非)运算

5.空值-->None,不能理解为0

6.变量与常量

变量命名规则与C语言类似,需要注意的是Python是动态语言,因此无需指定类型。

常量通常用全大写表示

** --> 幂运算 // -->地板除,只保留除法商的整数部分

7.列表list

>>> classmates = ['Michael','Bob','Tracy']
#len()可以获得list元素对个数
>>> len(classmates)
3
#可以用下标索引的方式来访问list中的元素,类似c语言的数组,下标从0开始,到len(classmates)-1结束
>>> classmates[0]
'Michael'
#当然,我们可以通过-1来获取最后一个元素
>>> classmates[-1]
#类似的-2、-3,但我们仍需要注意范围。
#list是个可变的有序表,因此可以向list中追加元素至末尾,也可以插入指定位置,当然也可以进行删除。
>>> classmates.append('Adam')
>>> classmates.insert(1,'Jack')
>>> classmates.pop()
>>> classmates.pop(1)
>>> classmates[1]='Sarah'
#list的元素数据类型可以不相同,也可以一个list包含其他list,这点不同于数组。
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
#而若要取到s中元素list里的元素,我们需采用s[2][0]、s[2][1]的方式,类似于二维数组,三维、四维...不常用
#list还可以为空
>>> L = []
>>> len(L)
0

8.元组tuple

tuple和list最大的不同就是,list是可变的,而tuple初始化后就无法进行修改了。

>>> classmates = ('Michael', 'Bob', 'Tracy')

取元素和list一样。可以用下标去访问。因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。同样,也可以定义一个空的tuple。特别地,定义只有一个元素的tuple是需采用t=(1,)的形式,如果是t=(1)的话,其结果是数字1。

当然,tuple中的元素类型可以为list,如果是这样list中的元素是可变的。

9.字典dict--类比于C语言中的map

使用键-值(key-value)方式存储。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
#把数据放入dict的方法,除了初始化时指定外,还可以通过key放入
>>> d['Adam'] = 67
>>> d['Adam']
67
#要避免key不存在的错误,一是通过in判断key是否存在,二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。
>>> 'Thomas' in d
False
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
#删除一个key
>>> d.pop('Bob')
#请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。并且,key应为不可变对象,故不可采用list数据类型

10.集合set--类比于C语言中的set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。重复元素在set中自动被过滤。

要创建一个set,需要提供一个list作为输入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

还可以采用add(key)方法添加元素、remove(key)方法删除元素。

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.remove(4)
>>> s
{1, 2, 3}

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集&、并集|等操作。

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

5.基础结构

1.条件判断

if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
if x: #如果x为非零值

if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse

2.循环

(1)for...in循环

依次把list或tuple中的每个元素迭代出来。

names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)

Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。

>>> list(range(5))
[0, 1, 2, 3, 4]
(2)while循环
while xxx:
xxxxx
(3)break--提前结束循环
(4)continue--提前结束本轮循环,并直接开始下一轮循环。

3.函数

python内置了很多函数,如max(x1,x2,x3,...)abx(x)

def 函数名(参数):
函数体--具体功能实现
return x,y #Python可以返回多个值,Python的函数返回多值其实就是返回一个tuple
def nop(): #空函数
pass #占位符,什么也不做,相当于c语言的{}

参数部分了解位置参数、默认参数(默认参数必须指向不变对象!)、可变参数(*numbers)--tuple、关键字参数(**kw)--dict、命名关键字参数(*)--命名关键字参数必须传入参数名。

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

Python知识整理(一)的更多相关文章

  1. Python知识整理(三)

    三.函数式编程与模块 1.函数式编程 1.高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式. 1.map/reduce map()函数接收两个参数,一个是函 ...

  2. Python知识整理(二)

    6.高级特性--简化代码量 1.切片 L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.即索引0,1,2,正好是3个元素. 如果第一个索引是0,还可以省略:L[:3] Python支持 ...

  3. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  4. NLTK 知识整理

    NLTK 知识整理 nltk.corpus模块自带语料 NLTK comes with many corpora, toy grammars, trained models, etc. A compl ...

  5. python知识大全目录,想学的看过来!

    Python总结篇——知识大全   python装饰器   PyCharm安装与配置,python的Hello World   sort与sorted的区别及实例   我必须得告诉大家的MySQL优化 ...

  6. Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)

    I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量                env:环境变量 常用系统变量: path pwd lang home his ...

  7. js事件(Event)知识整理

    事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下   鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...

  8. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  9. wifi基础知识整理

    转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...

随机推荐

  1. C语言日记② 初识 C的内存

    第一节: 上一个笔记 有趣的恶搞小程序 定时关机 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <str ...

  2. 从零入门 Serverless | 教你使用 IDE/Maven 快速部署 Serverless 应用

    作者 | 许成铭(竞霄) 阿里云开发工程师 SAE 应用部署方式 1. SAE 概述 首先,简单介绍一下 SAE.SAE 是一款面向应用的 Serverless PaaS 平台,支持 Spring C ...

  3. 解决VSCODE"因为在此系统上禁止运行脚本"报错

    在VSCODE中使用yarn,结果报错: 找了下原因,是因为PowerShell执行策略的问题. 解决方法:   以管理员身份运行vscode;  执行:get-ExecutionPolicy,显示R ...

  4. 定制input元素

    定制input元素 input元素可以用来生成一个供用户输入数据的简单文本框.其缺点在于用户在其中输入什么值都可以.有时这还不错,但是有时设计者可能希望让用户输入特定类型的数据.在后一种情况下,可以对 ...

  5. 论文解读(MPNN)Neural Message Passing for Quantum Chemistry

    论文标题:DEEP GRAPH INFOMAX 论文方向:  论文来源:ICML 2017 论文链接:https://arxiv.org/abs/1704.01212 论文代码: 1 介绍 本文的目标 ...

  6. Java(34)IO流之字符流

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228453.html 博客主页:https://www.cnblogs.com/testero ...

  7. 内网渗透DC-1靶场通关(CTF)

    最新博客见我的个人博客地址 DC系列共9个靶场,本次来试玩一下DC-1,共有5个flag,下载地址. 下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题. ...

  8. 用NXOpen.CAM.CAMSetup.CopyObjects复制刻字操作

    复制刻字操作 手动时,报粘贴对象失败: 用代码执行,报内部错误: Dim destinationObject As NXOpen.CAM.CAMObject = CType(NXOpen.Utilit ...

  9. python中对列表的排序

    1.sort()对列表永久性的排序,首字母按照字母表的顺序排列 book=['python','java','c++','web'] book.sort() print(book) 结果如下: 2.向 ...

  10. Matlab/Modelsim图像联合仿真平台

    FPGA图像仿真平台 1 引言 在使用modelsim进行图像算法的功能仿真时,无法得到图像的实时预览,因此直观性有所欠缺.因此可配合matlab使用,通过modelsim读出txt格式的图像,利用m ...