园长

学无止境 知行合一

图片源于网络 侵删

Python基础

正确使用缩进

缩进,即制表符(键盘上Tab键)用来决定代码之间的逻辑关系,所以在使用选择结构和循环结构,或者是编写函数的时候,务必注意缩进的使用,若使用不恰当,会造成程序报错,如:

1
2
while True:
print("Hello world")

执行后,在PyCharm中则会显示:

print(“Hello world”)
^
IndentationError: expected an indented block
(想要了解更多常见错误,请戳:Python常见报错)
正确的写法为:

1
2
while True:
print("Hello world")

执行后,在PyCharm中则会显示:

Hello world
Hello world
Hello world
Hello world
Hello world
…..


正确使用符号

众所周知,编程中实用的符号都为英文符号,初入的萌新大多都会出现:

SyntaxError: invalid character in identifier

这正是因为符号使用错误,由下表可见,中英文符号的差距存在差别,编程时值得注意。

英文符号中文符号
;
:
""“”

注释的用法

  • 注释单行内容:

    使用 # 注释

  • 注释多行内容:
    使用 ‘ ‘ ‘或者“ “ “ 注释

1
2
3
4
5
6
7
8
9
10
while True:              #开始循环
print("Hello world") #打印文本
'''
我是注释示例
运行代码将忽视我
'''
"""
我也是注释示例
运行代码将忽视我
"""

标识符及命名规则

标识符

Python中对标识符构成的要求:以数字或者下划线(_)开头,后跟字母、数字、下划线。
合法名称示例非法名称示例
x2x
num_1a-b
python666Py 666
同时,标识符区分大小写,命名时最好选择能见文知义的名称。 推荐使用驼峰式命名,如欲写一个意为my love的标识符,则写MyLove、My_Love。

不要使用单、双下划线开头,Python中会有冲突(尽量避免使用)
不要使用关键字作为标识符,如 False,True


变量与赋值

变量

Python不需要申明数据类型,它能自动识别赋值的类型可用函数type(变量名)判断数据类型。

1
2
m=2
type(m)

执行该代码就会输出以下内容,说明赋给m的值2是整型(int)

1
<class 'int'>
类型
2int-整型
2.6float-浮点型
园长str-字符串
2=3jcomplex-复数
Truebool-布尔值
[1,2,3,4]list-列表

赋值

  • 变量=表达式
1
x = 100
  • 链式赋值
1
x = y = z = 100
  • 解包赋值
1
a , b = 100, 50



数据的输入与输出

  • 输入 input()
  • 输出 print()

数值

数值操作

  • 内置操作符
描述操作符
加减乘除+-*/
整除//
取余%
乘方**
  • 内置运算函数
描述函数
x的绝对值abs(x)
输出(x//y,x%y)divmod(x)
输出(x**y)%z,z可选pow(x,y,[z])
对x四舍五入,保留ndigits位小数round(x,[ndigits])
返回x1,x2,···xn中的最大值max(x1,x2,···xn)
返回x1,x2,···xn中的最小值min(x1,x2,···xn)


math库

使用时需要调用math库

1
import math

math库中的数学常数
数学形式常数
πpi
ee
inf
-∞-inf
非浮点数标记nan
math库中数值函数
数学形式/描述函数
|x|fabs(x)
x%yfmod(x,y)
浮点数精确求和fsum([x,y,....])
返回x,y的最大公约数(x,y为整数)gcd(x,y)
返回x整数部分trunc(x)
返回x小数和整数部分modf(x)
向上取整返回不小于x的最小整数ceil(x)
向下取整返回不大于x的最大整数floor(x)
x!factorial(x)

示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import math
x = -520.1314
y = 520.1314
z = 1314.520
a = 15
b = 5
print("x的绝对值为",math.fabs(x))
print("x除以y取余为",math.fmod(x,y))
print("xyz的和为",math.fsum([x,y,z]))
print("a,b的最大0.公约数为",math.gcd(a,b))
print("x的整数部分为",math.trunc(x))
print("x的小数部分和整数部分分别为",math.modf(x))
print("不小于兄的最小整数为",math.ceil(x))
print("不大于x的最大整数位",math.floor(x))
print("b的阶乘为",math.factorial(b))
输出为

x的绝对值为 520.1314
x除以y取余为 -0.0
xyz的和为 1314.52
a,b的最大0.公约数为 5
x的整数部分为 -520
x的小数部分和整数部分分别为 (-0.13139999999998508, -520.0)
不小于兄的最小整数为 -520
不大于x的最大整数位 -521
b的阶乘为 120

math库中的幂对数函数、三角函数
数学形式/描述函数
x^ypow(x,y)
e^xexp(x)
√xsqrt(x)
logʙᴀsᴇXlog(X,[BASE])
log₂xlog2(x)
lgxlog10(x)
弧度化角度degrees(x)
角度化弧度radians(x)
√(x²+y²)即(x,y)点到(0,0)点的距离hypot(x,y)
sin x(cos,tan同)sin(x )
arcsin x(arccos,arctan同)asin(x )

最后编辑与
2020/3/2 22:11:59


字符串的索引与切片

字符串的索引值如下:
1
2
3
正向索引值    0    1   2    3    4    5
字 符 串 P y t h o n
反向索引值 -6 -5 -4 -3 -2 -1
例如p的索引值为0或-6
以下为字符串索引的例子 ① 访问指定字符
1
2
3
s = "python"
print(s[0])
print(s[-6])
输出的结果都为“p”

p
p

② 访问区间([头下标:尾下标])
1
2
3
4
5
s = "python"
print(s[0:5]) #打印正向0到5
print(s[0:5:2]) #打印正向0到5,隔一个字符取一个
print(s[5:0:-1]) #打印反向,为0的字符无法取到
print(s[::-1]) #反向取整串
反向取头下标必须大于尾下标,否则输出为空 输出的结果为 > pytho > pto > nohty > nohtyp

字符串处理与操作

字符串基本运算符

运算符描述
+"yz"+"666"结果为"yz666"
*"yz"*6结果为yzyzyzyzyzyz
in判断是否为子字符串,"yz"in"yz6"结果为True

字符串处理函数

函数描述
len(x)返回字符串长度
str(x)将任意类型转换为字符串
chr(x)返回Unicode编码为x的字符
ord(x)返回x的Uincode编码值
hex(x)将整数x转化为16进制,返回小写字符串
oct(x)将整数x转化为8进制,返回小写字符串
1
2
注:  ①大小写字母的Unicode编码都是按顺序排列的
②小写字母的编码整体大于大写字母的编码,大写字母的编码大于数字的编码

内置字符串处理方法

字符串的查找
  • find()rfind()用于查找一个字符串在指定范围(默认为整个字符串)中首次和最后一次的位置,不存在会返回-1
    1
    2
    3
    4
    s = "Thisisyz'sblog,bolgiscool"
    print(s.find("blog")) #"bolg"在字符串s中第一次出现的位置
    print(s.rfind("is")) #"is"在字符串是中最后一次出现的位置
    print(s.find("666"))

10
19
-1


  • index()rindex()用于查找一个字符串在指定范围(默认为整个字符串)中首次和最后一次的位置,不存在会抛出异常
    用法:字符串.index('要查找的字符')

    1
    2
    3
    4
    s = "Thisisyz'sblog,bolgiscool"
    print(s.index("blog")) #"bolg"在字符串s中第一次出现的位置
    print(s.rindex("is")) #"is"在字符串是中最后一次出现的位置
    print(s.index("666"))

    print(s.index("666"))
    ValueError: substring not found
    10
    19


  • count()用来返回字符串在范围内出现的次数,不存在会返回0
    用法:字符串.count('要计数的字符')

    1
    2
    3
    4
    s = "python I love python pppp"
    print(s.count("p"))
    print(s.count("python"))
    print(s.count("66"))

    6
    2
    0



    字符串的分割
  • split()rsplit()方法分别用来以指定字符为分隔符,从原字符串左端右端开始将其分隔成多个字符串

用法:变量.resplit('分割符',maxsplit=最大分割次数)maxsplit可缺省

1
2
3
4
5
6
7
a="一,二,三,四,五,六"
print(a.split(',',maxsplit=2)) #按','分割,分两次
print(a.rsplit(',',maxsplit=2)) #按','分割,分两次

b='H E L L O'
print(b.split()) #按照默认分割
print(b.split(maxsplit=3))#按照默认从右分割三次

[‘一’, ‘二’, ‘三,四,五,六’]
[‘一,二,三,四’, ‘五’, ‘六’]
[‘H’, ‘E’, ‘L’, ‘L’, ‘O’]
[‘H E’, ‘L’, ‘L’, ‘O’]

可见分割后返回的结果是列表
默认按照空白字符(空格,制表符,换行符)来分割

  • partition()rpartition()方法分别用来以指定字符串为分隔符将原字符串分隔为 3 个 部分:
    分隔符之前的字符串-----分隔符字符串-----分隔符之后的字符串
    如果指定的字符串不在原字符串中,则返回原字符串和两个空字符串。
    如果字符串中有多个分隔符,则:
        partition()方法按从左向右遇到的第一个分隔符来进行分隔;
        rpartition()方法按从右向左遇到 的第一个分隔符来进行分隔。

用法:字符串.aprtition('分隔字符')

1
2
3
a="一,二,三,四,三,二,一"
print(a.partition('三'))
print(a.rpartition('三'))

(‘一,二,’, ‘三’, ‘,四,三,二,一’)
(‘一,二,三,四,’, ‘三’, ‘,二,一’)



字符串的连接
  • join()
    用法:'连接符.join(字符串)'
1
2
s=["2020","04","14"]
print('-'.join(s))

2020-04-14



字符串转换大小写

s = 'This is my blog.'

代码 效果
s.lower() 小写
s.upper() 大写
s.capitalize() 首字母大写
s.title() 所有首字母大写
s.swapcase() 互换大小写

示例:

1
print(s.swapcase())

tHIS IS MY BLOG.



字符串替换
  • replace()
    用法:字符串.replace("被替换内容","替换内容")
1
2
s = 'This is my blog.'
print(s.replace("my","我的"))

This is 我的 blog.



字符串删除

用法:字符串.strip('删除类容')

  • strip() 删除字符串两端字符
  • rstrip()删除字符串右端字符
  • lstrip()删除字符串左端字符
1
2
3
4
s = '+++++++WORLD+++++++'
print(s.strip("+"))
print(s.rstrip('+'))
print(s.lstrip('+'))

WORLD
+++++++WORLD
WORLD+++++++



字符串判断

是否以指定字符开始或结束

用法:字符串.endwith('XXX') 返回 True 或 False

startswith() 开始
endswith() 结束

1
2
s = '2019010088'
print(s.startswith("2019"))

True

字符串类型判断
isupper() 是否全为大写
islower() 是否全为小写
isdigit() 是否全为数字
isalnum() 是否为数字或字母
isalpha() 是否全为字母


字符串排版
1
2
3
4
5
6
7
8
9
s = "Hello World"

print(s.center(30, "=")) #字符串居中对齐,输出宽度为 30,不足的以“=”填充

print(s.ljust(20, "*")) #字符串居左对齐,输出宽度为 20,不足的以“*”填充

print(s.rjust(20, "*")) #字符串居右对齐,输出宽度为 20,不足的以“*”填充

print(s.zfill(20)) #输出宽度为 20,在字符串左侧以字符“0”填充

=========Hello World==========
Hello World*****
*****Hello World
000000000Hello World



format()格式化法

  • -
1
2
print("我是{},我的网站地址是{}".format('园长','https://yzyyz.top'))  #默认顺序
#print("我是{0},我的网站地址是{1}".format('园长','https://yzyyz.top')) #指定顺序

我是园长,我的网站地址是https://yzyyz.top


  • -

使用 format()方法格式化字符串的时候,首先需要在“{}”中输入“:”,在“:”之后分别设置<填充字符> <对齐方式> <宽度>

可选值
<填充字符> “*”,“=”,“ -”等,但只能是一个字符,默认为空格
<对齐方式> ^(居中)、 <(左对齐)、 >(右对齐)
<宽度> 一个整数,指格式化后整个字符串的字符个数
  • -
    1
    2
    3
    print("{:.2f}".format(3.1415926)) # 结果保留 2 位小数 
    print("{:=^30.4f}".format(3.1415926)) # 宽度 30,居中对齐,“=”填充,保留 4 位小数
    print('{:5d}'.format(24)) # 宽度 5,右对齐,空格填充,整数形式输出
    可知默认填充符是空格,默认对齐方式是右对齐

3.14
============3.1416============
24




混合运算和类型转换

这里记录下*混合运算和类型转换 *

类型自动转换

1
2
3
4
5
f = 24 + 24.0      # 输出 48.0
type(f) # 输出<class 'float'>
56 + True # 将 True 转换成 1,输出 57,True 为布尔类型
44 + False # 将 False 转换成 0,输出 44,False 为布尔类型
56 + '4' # 报错,数值型数据和字符串无法做“+”运算
`注意,在混合运算中,布尔类型(bool)True 将自动转换成 1,False 将自动转换成 0 参与运算`

混合运算和类型转换

1
2
3
int(2.32)   # 转换为整数类型,输出 2
float(5) # 转换为浮点数类型,输出 5.0
int("abc") # 无法转换,报错 invalid literal for int() with base 10: 'abc'

2020/4/1 0:30:40


伪随机数:计算机中通过采用梅森旋转算法生成的(伪)随机序列元素,python中用于生成伪随机数的函数库是random

random库概述

这里放几个random库常用函数:

  • random()
  • randrange()
  • randint()
  • choice()
  • uniform()
  • sample()
  • shuffle()
  • seed()


首先导入random

1
2
3
4
# random常用函数
# https://yzyyz.top

from random import *

random()

1
print(random()) # 返回[0.0,1.0)中一个随机浮点数

0.647239093910809


randrange()

1
2
3
print(randrange(2))        #在0,1中选
print(randrange(0,2)) #在0,1中选
print(randrange(0,10,2)) #在0,9中选偶数 因为空了每个奇数

1
0
0


randint()

1
print(randint(0,2))      #从0,1,2中随机选整数 相当于randrange(0,3)

2


choice()

1
2
3
4
5
s=["随","机","取"]
print(choice(s)) #从s中随机取一个

ss="abcdefghigklmnopqrstuvwxyz<>?!@#$%^&*"
print(choice(ss)) #从ss中随机取一个


b


uniform()

1
print(uniform(1,2))    # 1,2 范围随机小数

1.8666232147036852


sample

1
2
b='ilovenwafu'
print(sample(b,3)) #从b中随机取3个,返回列表

[‘a’, ‘f’, ‘l’]


shuffle()

1
2
3
d=[1,2,3,4,5,6] #随机d中的元素
shuffle(d)
print(d)

[3, 4, 1, 2, 5, 6]


seed()

1
2
3
4
5
6
print('盲猜两次随机是一样的结果')
#随机数种子
seed(2) #重置随机数生成器
print(random())
seed(2)
print(random())

两次随机是一样的结果
0.9560342718892494
0.9560342718892494


python中列表以及元组的内容较多,写成文章可能会有杂乱感,故我做了张思维导图。

2020/6/14 23:30:19




 评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 volantis 作为主题 。