Python【系列教程】之基础学习笔记

一、python安装及第一个python程序

(1)官网下载最新版的python 64位安装包并进行安装

(2)配置环境变量

在安装的时候,直接勾选Add  Python 3.7 to Path,单击Customize installation可以在安装时指定自定义的安装路径 单击该选项即

可开始安装。在接下来 安装界面中只 改变 Python 安装路径(建议安装在指定盘符的根路径下 ,比如安装在 D:\Python\目录下), 其他地方使用默认选项即可。

安装完成之后,打开cmd 面板,输入python 看到如下输出说明安装成功!

C:\Users\段朝旭>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

输入以下代码进行测试

>>>  print("hello world")

hello world

>>> 1 + 2
3
>>> 5.3 + 2.3
7.6
>>> 1.3-2.4
-1.0999999999999999
>>> 1.3 * 2
2.6
>>> 3.5 / 3
1.1666666666666667
>>> 3.5 // 3
1.0
>>> 3.5 ** 2
12.25
>>> 5 ** 3
125
>>> import math
>>> math.sin(1.57)
0.9999996829318346
>>> math.cos(0.78)
0.7109135380122773
>>> math.tan(math.pi / 4)
0.9999999999999999

二、python基础知识

(1)单行注释和多行注释

# 代表单行注释
#print("hello,world")

"""代表多行注释
"""
this is a duo hang de zhu shi
"""

(2)变量

Python 是弱类型语言 ,弱类型语言有两个典型特征

  • 变量无须声明即可直接赋值 对一个不存在的变量赋值就相当于定义了一个新变量。
  • 变量的数据类型可以动态改变:同一个变量可以一会儿被赋值为整数值,一会儿被赋值为 字符串。

type()函数返回 传入数据的数据类型

>>> type("hello")
<class 'str'>
>>> type(1)
<class 'int'>

print()函数用法

user_name = "Charlie"
user_age = 8
#打印时默认的间隔符是空格
print("用户姓名",user_name,"用户年龄",user_age)
#使用sep参数将默认的间隔符修改为|
print("用户姓名",user_name,"用户年龄",user_age,sep="|")
#print函数默认会换行,因为end参数默认是\n,我们可以指定为空字符串,打印的时候就不会换行了
print(40,"\t",end="")
print(60,"\t",end="")
#可以直接输出内容到一个文件中
f=open("D:\\open.txt","w")
print("锄禾日当午",file=f)

输出结果:

用户姓名 Charlie 用户年龄 8
用户姓名|Charlie|用户年龄|8
40 	60 	

(3)python的关键字和内置函数                                        

False None True and as
assert break class continue def
del elif else except finally
for from global if import
in is lambda nonlocal not
or pass reise return try
while with yield    

 使用keyword 查看 python的关键字

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

 python的内置函数

abs() all() any()

basestring()

bin()

bool()

bytearray() callable() chr() classmethod()
cmp() compile() complex() delattr() dict()
dir() divmod()

enumerate()

eval()

execfile()

file() filter() float() format() frozenset()
getattr() globals() hasattr() hash() help()
hex() id() input() int()

isinstance()

issubclass() 

iter()  len()  list() locals()
long() map() max() memoryview() min()
next()

object()

oct()

open()

ord()

pow()

print()

property()

range()

raw_input()

reduce()

reload() repr()

reversed()

zip()
round() set() setattr() slice() sorted()

staticmethod()

str()

sum()

super()

tuple()
type()

unichr()

unicode() vars()  xrange()
Zip()

__import__ ()

apply() buffer() coerce()
intern        

以上python内置的关键字以及内置的函数不应该作为标识符。

(4)Python 整型数值有4种 表示形式

  • 十进制形式 最普通的整数就是十进制形式的整数
  • 二进制形式:以 Ob OB 开头的整数就是 进制形式的整数
  • 八进制形式:以Oo或00 开头的整数就是八进制形式的整数(第 二个字母是大写或小写的O)
  • 十六进制形式:Ox或 ox 开头 整数就是十六进制形式的整数,其中 10 ~15 分别以a~f(此处的a~f不区分大小写)来表示
>>> 0x13
19
>>> 0XaF
175
>>> 0b111
7
>>> 0B101
5
>>> 0o54
44
>>> 0O17
15

 (5)浮点型

浮点型数值用于保存带 数点的数值, python 浮点数有两种表示形式。

  • 十进制形式:这种形式就是平常简单的浮点数,例如 5.12 512 0.512 。浮点数必须包含 一个小数点,否则会被当成整数类型处理。
  • 科学计数形式 例如 5.12e2 (即 5.12 *10^2 )、 5.12E2 (也是 5.12*10^2)必须指出的是,只有浮点型数值才可以使用科学计数形式表示。例 51200 个整型值,但

512E2 则是浮点型值.

(6) 复数 

导入cmath模块,例如:3 + 0.2j

(7) repr和字符串

sl ”这本书的价格是
p = 99.8 
#字符串直接拼接数值,程序报错
print(sl + p) 
#使用 str()将数值转换成字符串
print(sl + str(p)) 
#使用 repr()将数值转换成字符串
print (sl+repr(p))

 str() 和 repr()函数都可 将数值转换成字符串,其 str 本身是 Python 类型( 和int float 一样〉,而 repr()则 只是 个函数 ,此外, repr 还有 一个功能, 它会以 Python 表达式 形式来表示 值。对 比如下两行粗体 码。

st = "i will play my life";

print (st)

print(repr(st))

上面代码中 st 本身就是 个字符串 但程序依然使用了 repr() 对字符串进行转换。运行上面程 序,可以看到下输出结果。

I will play my fife

I will play my fife

 通过上面的输出结果可以看出,如果直接使用print()函数输出字符串 将只能看到字符串的内容, 没有引号,但如果先使用 repr()函数对字符串进行处理,然后再使用 print() 执行输出,将可以 看到带引号 字符串一一 就是字 Python的表达式形式。

(8)使用input()函数获取用户输入

python3中input()函数用于向用户生成一条提示,然后获取用户输入的内容,由于input()函数总会将用户输入的内容放入字符串中,因此用户可以输入任何内容,input()函数总是返回一个字符串

msg = input("请输入你的值:")
print("您输入得值是:",msg, "值的类型是:",type(msg))
请输入你的值:2
您输入得值是: 2 值的类型是: <class 'str'>

请输入你的值:1.2
您输入得值是: 1.2 值的类型是: <class 'str'>

请输入你的值:Hello
您输入得值是: Hello 值的类型是: <class 'str'>

 (9)长字符串

myPhone = """这是一个长字符串"""
print(myPhone)

myPhone ="这是一个" \
"长字符串"
print(myPhone)

num = 20+3/4+ \
2*3
print(num)

(10)原始字符串

由于字符串中的反斜线都有特殊的作用,因此当字符串中包含反斜线时,就需要对其进行转义。 比如写一条 Windows 的路径 G:\publish\codes\02\2.4 ,如果在 Python 程序中直接这样写肯定 是不行的,需要写成: G:\\publish\codes\\02\\2.4 ,这很烦人,此时可借助于原始字符串来解决这个 问题 ,原始字符串以“r ”开头, 原始字符串不会把反斜线当成特殊字符。因此,上面的 Windows 路径可直接写成 r' G:\publish\codes\02\2.4

url = "D:\\sadasda\\asdsadasd"
url = r"D:\sadasda\asdsadasd";
print(url)

 (11) 字节串bytes

#创建一个空的bytes
bttes1 = bytes()
print(bttes1)
#创建一个空的bytes
bttes2 = b''
print(bttes2)
#通过前缀指定hello是bytes类型的值
b3 = b'hello'
print(b3)
print(b3[0])
print(b3[2:4])
# 调用bytes方法将字符串转换成bytes对象
b4 = bytes('我爱kxm',encoding='utf-8')
print(b4)
# 利用字符串的encode()方法编码成bytes,默认使用UTF-8字符集
b5 = "我爱kxm".encode('utf-8')
print(b5)
# 将bytes解码成字符串
b5str = b5.decode("utf-8")
print(b5str)

(12)字符串格式化

price = 108 
print ("the book ’s price is %s" % price)

格式化字符串中的“ %s ”被称为转换说明符(Conversion Specifier),其作用相当于一个占位符, 它会被后面的变量或者 表达式的 值代替。 %s 指定将变量或值使用 str () 函数转换为字符串。 如果格式 字符串 包含多个“%s ”占位符,第三部分也应该对应地提供多个变量,并且使 用圆括号将这些变量括起来。 如下代码:

print("the book price is %s %s" % ("我","是一个粉刷匠"))

 

转换说明符

说明

d, i

转换为带符号的十进制形式的整数

o

转换为带符号的八进制形式的整数

x

转换为带符号的十六进制形式的整数

X

转换为带符号的十六进制形式的整数
e

转化为科学计数法表示 的浮点数( e小写)

E

转化为科学计数法表示 的浮点数( E大写

f,F 转化为十进制形式的浮点数

g

智能选择使用 f或者e格式

G

智能选择使用 f或者e格式

C

转换为单字符(只接受整数或者单字符字符串

r 使用repr()将变量或者表达式转换为字符串
s 使用str () 将变量或者表达式转换为字符串

(13)序列相关方法

# 希望kxm能够快点好起来
test = "希望kxm能够快点好起来"
# 获取test 从右边开始,索引为4的字符
print(test[-4])
# 获取test从2开始到结束的字符串
print(test[2:])
# 获取test 从索引为2到4的字符串
print(test[2:4])
# 获取test从索引 -6到-3的字符串
print(test[-6:-3])
# 使用in关键字判断 test 是否包含 very 字符串
print('very' in test)
print('kxm' in test)
# 获取test字符串的长度
print(len(test))
# 获取test字符串中的最大字符
print(max(test))
# 获取test字符串中的最小字符
print(min(test))

(14)大小写相关方法

dir() : 列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)。

help(): 查看某个函数或方法的帮助文档。

str类中与大小写相关的常用方法如下:

test = " abC jkL"
# 将每个单词首字母改为大写
print(test.title())
# 将整个字符串改为大写
print(test.upper())
# 将整个字符串改为小写
print(test.lower())

print(dir(str))
print(help(str.lower))
# 删除字符串前后的空白
print(test.strip())
# 删除字符串前面(左边)的空白
print(test.lstrip())
# 删除字符串后面(右边)的空白
print(test.rstrip())
#判断字符串是否 以指定子串开头
print(test.startswith(" "))
print(test.endswith("l"))
#查找指定子串在字符串中出现的位置,如果没有找到指定子串 ,则返回-1
print(test.find("a"))
#查找指定子串在字符串中出现的位置,如果没有找到指定子串 ,则引发 ValueError错误。
print(test.index("a"))
#使用指定子串替换字符串中的目标子串
print(test.replace("jk","mk"))
#定义翻译映射表
table = {97:945 , 98:946 , 116: 964}
print(test.translate(table))
"""str的translate()方法需要根据翻译映射表对字符串进行查找、替换。在
上面程序中自己定义了一个翻译映射表,这种方式需要开发者能记住所有字符的编码 ,这显然
不太可能 为此, Python 为由类提供了一个 maketrans ()方法,通过该方法可以非常方便地创建翻
译映射表"""
table1 = str.maketrans("ab","OP")
print(test.translate(table1))


myStr = "my.org is a good site"
#使用空白对字符串进行分割
print(myStr.split())
#使用空白对字符串进行分割,最多只分割前两个单词
print(myStr.split(None,2))
#使用点进行分割
print(myStr.split("."))
mylist = myStr.split()
#使用 /作为分割符,将 mylist 连接成字符串
print("/".join(mylist))
#使用 ,作为分割符,将 mylist 连接成字符串
print(",".join(mylist))

(15) 运算符

# 连续赋值
a = b = c = 20
print(a, b, c)
x = - 5.0
x = -x
print(x)
y = -5.0
y = +y
# n 个字符串拼接起来
s3 = 'crazy'
print(s3 * 5)
"""“/表示普通除法,使用它除出来的结果与
平常数学计算的结果是相同的(即除不尽时,会产生小数部分);而“//”表示整除,使用它除出
来的结果只有整数部分,小数部分将会被舍弃。"""
print(19 / 4)
print(19 // 4)
"""%:求余运算符 Python要求求余运算符的两个操作数都是整数, Python 的求余运算符完全
支持对浮点数求余。求余运算的结果不一定总是整数,它是使用第一个操作数来除以第二个操作数,
得到一个整 结果后剩下的值就是余数。"""
print(5 % 3)
print(5.2 % 3.1)
# ** 乘方/ 开方运算
print('5的2次方:', 5 ** 2)  # 25
print('4的3次方', 3)  # 64
print('4的开平方:', 4 ** 0.5)  # 2.0
print('27的开3次方', 27 ** (1 / 3))  # 3.0

"""
& : 按位与 
0 0 0  (两个数都是0,所以结果才是0)
0 1 0  (两个数只有一个为1,所以结果是0)
1 1 1  (两个数结果都是1,所以结果才是1)

| :按位或  
0 0 0  (两个数都是0,所以结果是0)
0 1 1  (两个数只要其中一个是1,结果就是1)
1 1 1  (两个数都是1,所以结果是1)

^ : 按位异或。 
0 0 0   (相同为0,不同为1)
0 1 1
1 1 0

~ : 按位取反。(0变成1,1变成0)
0 0
1 1 
<<: 左位移运算符:左移运算符是将操作数的二进制码整体左移指定位数,左移后右边空出来的位以0来填充
0010101 << 2 
1010100
>>: 右位移运算符: Python 右移运算符为 >>。对于“>>”运算符而言,把第一个操作数的二进制右移指定
位数后,左边空出来的位以原来的符号位来填充。即 :如果第一个操作数原来是正数,则 左边补 0;
如果第一个操作数是负数,则 边补 o
1010011 >>2
1010000
必须指出的是,位移运算符只适合对整型数进行运算

"""
a = 'abcdefghijklmn'
# 获取索引2到索引8的子串,步长为3
print(a[2:8:3])  # 输出cf
# 获取索引2到索引8的子串,步长为2
print(a[2:8:2])  # 输出ceg

a = 3
b = a
# 判断两个变量所引用的对象是否相同,
print(a is b)
# 判断两个变量所引用的对象是否不相同.
print(a is not b)
# 使用id()获取所引用的对象的内存地址
print(id(a))
print(id(b))
# 布尔值也可以进行运算
print(True + False)
print(False - True)
print(-True)
print(-False)
# ==只比较两个变量的值,但 is要求两个变量引用同一个对象。
import time

a = time.time()
b = time.time()
print(a == b)  # 输出True
print(a is b)  # 输出False
# 逻辑运算符 and  or not

a = "book"
if a.startswith("b") and len(a) > 2:
    print(True)
else:
    print(False)

a = 75
b = 60
st = a if a > b else b
print(st)

小练习:

(1)

num1, num2 = int(input("请输入第一个整数:")), int(input("请输入第二个整数:"))
print(num1 // num2)
print(num1 / num2)
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)

输出结果:

 请输入第一个整数:10
请输入第二个整数:2
5
5.0
12
8
20

(2) 

# 打印一个字串在一个字符串中出现的次数
string, sub_string = input("请输入字符串:"), input("请输入子串:")
count = 0
subLen = len(sub_string)
print(range(len(string) - 1))
for i in range(len(string) - 1):
    if string[i:i + subLen] == sub_string:
        count += 1
print("子串出现的次数是 %s" % count)

输出结果: 

请输入字符串:abcabcabc
请输入子串:ab
range(0, 8)
子串出现的次数是 3

(3)

num1 = int(input("请输入一个整数:"))
print("十进制:%d" % num1)
print("八进制:%s" % oct(num1))
print("十六进制(大写):%s" % hex(num1))
print("二进制:%s" % bin(num1))

输出结果: 

请输入一个整数:50
十进制:50
八进制:0o62
十六进制(大写):0x32
二进制:0b110010

 (4)

string, sub_string = input("请输入字符串:"), input("请输入子串:")
list = sub_string.split(" ")
index,repStr = list[0],list[1]
tem = string[int(index)]
#方法一
print(string.replace(tem,repStr,1))
#方法二
str_new = string[:int(index)] + repStr + string[int(index)+1:]
print(str_new)

请输入字符串:ab.ccc
请输入子串:3 p
ab.pcc
ab.pcc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章