一、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. 华为云计算IE面试笔记-请描述华为容灾解决方案全景图,并解释双活数据中心需要从哪些角度着手考虑双活设计

    容灾全景图: 按照距离划分:分为本地容灾 同城容灾 异地容灾  本地容灾包括本地高可用和本地主备.(本数据中心的两机房.机柜) 本地高可用这个方案为了保持业务的连续性,从两个层面来考虑: ①一个是从主 ...

  2. C++: 基于四叉树数据结构的自适应网格(初探)

    C++: 基于四叉树数据结构的自适应网格 二叉树是一种典型的非线性存储数据结构,查找效率可以达到\(O(log_2N)\),同样,这类树状结构存在许多种变体,详细参考邓俊辉老师的<数据结构C++ ...

  3. 带你读Paper丨分析ViT尚存问题和相对应的解决方案

    摘要:针对ViT现状,分析ViT尚存问题和相对应的解决方案,和相关论文idea汇总. 本文分享自华为云社区<[ViT]目前Vision Transformer遇到的问题和克服方法的相关论文汇总& ...

  4. 日常学习用到的Git指令

    Git 常用Git指令 (本地) git init - 将文件夹初始化为Git仓库 git add - 将工作区的指定文件放入暂存区 git status - 查看工作区和暂存区的状态 git com ...

  5. Java JDK的下载与安装!Java基础

    在了解什么是Java.Java 语言的特点以及学习方法之后,本节将介绍如何搭建编写 Java 程序所需要的开发环境--JDK,只有搭建了环境才能敲代码! 学Java的都知道,JDK 是一种用于构建在 ...

  6. storm卡顿修改

    ​ 最近的webstorm越来越卡了,有时候甚至会弹出 Out of memory的窗口,提示要设置 xmx的值, 8G内存跑你这小软件还会不够用???要内存?给你,看你还会不会卡成翔! 于是果断给x ...

  7. 题解 CF1172E Nauuo and ODT

    题目传送门 题目大意 给出一个 \(n\) 个点的树,每个点有颜色,定义 \(\text{dis}(u,v)\) 为两个点之间不同颜色个数,有 \(m\) 次修改,每次将某个点的颜色进行更改,在每次操 ...

  8. 解决npm : 无法加载文件 D:\Code\renren-fast-vue\node_modules\.bin\npm.ps1,因为在......

    解决这个问题: 看看错误信息: npm : 无法加载文件 D:\DevPath\nodejs\npm.ps1,因为在此系统上禁止运行脚本.有关详细信息,请参阅 https:/go.microsoft. ...

  9. 苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功

    苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功 这是苹果wwdc2021 推出的新功能 参考官网链接 App Store Server API | Apple Deve ...

  10. 【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?

    问题描述 使用微软Azure AD,对授权进行管理.通过所注册应用的OAuth API(https://login.chinacloudapi.cn/{TENANT ID}/oauth2/v2.0/t ...