python基础(一)
1. 编码
如果在程序中用到了中文,直接输出结果很可能会出错,比如:
print(“你好”)
解决的办法是,在程序的开头写入如下代码:
# - *- coding:utf-8 -*-
或者
# coding=utf-8
用于向 Python 解释器声明源代码文件所用的编码类型为“utf-8”,如果代码里有中文,打印的时候可以使中文正常显示。
2. 注释
Python 中的注释包括单行注释和多行注释。
2.1 单行注释
Python 中单行注释以 # 开头:
#第一个注释
print("Hello World")
# 第二个注释
执行以上代码,输出结果为:
Hello World
2.2 多行注释
(1)Python 中多行注释可以用多个 # 开头,或者用 ‘’’ 和 “”" 双引注释内容:
# 第一个注释
# 第二个注释
'''
第三个注释
第四个注释
'''
"""
第五个注释
第六个注释
"""
print("Hello World")
执行以上代码,输出结果为:
Hello World
(2)通过快捷键进行多行注释
在 Windows 系统中,可以通过鼠标选择需要注释的代码,然后使用“Ctrl+/”可以快速注释或取消注释多行代码:
# def outer(origin):
# def inner():
# print("before")
# res = origin() # 调用下面的 func 函数
# print("after")
# return res
#
# return inner
print("Hello")
执行以上代码,输出结果为:
Hello
3. 标识符
3.1 标识符的概念
标识符是程序中某一元素(变量、关键字、函数、类、模块、对象)的名字。说通俗点,标识符就是以后给我们写的每个代码所起的名字,就好比我们每个人生下来都要起名字。除了关键字的名字是固定的,其它元素都可以根据标识符的命名规则进行命名。
3.2 标识符的命名规则
标识符由字母( A~Z , a~z )、数字(0-9)、以及下划线(_)组成。
(1)标识符的第一个字符必须是字母( A~Z , a~z )或下划线(_);
比如:
Hello
apple
_max
_Min
(2)标识符的其它部分由字母( A~Z , a~z )、数字(0-9)或者下划线(_)组成;
比如:
Apple10
Apple_10
V_3_V
CON2_5
_Test_3
(3)标识符对大小写敏感;
比如:
A 和 a
Apple 和 apple
Sum_ 和 sum_
_name 和 _NAME
Test2 和 test2
3.3 变量
变量是标识符的一种,是一个用于保存值的占位符。可以通过变量名获得对值的引用,可以是任意的数据类型。变量命名时尽量体现出值的数据类型。如命名 count、length 和 size 表明数据类型是数字,命名 name、title 和 message 表明数据类型是字符串,单个字符命名的变量诸如 i、j、k 通常在循环中使用。
Python 中使用变量,不需要声明,直接为变量赋值即可使用,比如:
a = 10
print(a)
执行以上代码,输出结果为:
10
上述代码中,a 即为变量。但要注意,不能使用没有进行过赋值的变量,使用之后就会报错,比如:
print(a)
执行以上代码,输出结果为:
Traceback (most recent call last):
File "", line 1, in <module>
print(a)
NameError: name 'a' is not defined
4. 关键字
4.1 关键字的概念
有一分部标识符是 Python 自带的、具有特殊含义的名字,我们称之为“关键字”,或者“保留字”;关键字已经被 Python 使用,所以不允许开发者自己定义和关键字名字相同的标识符。
4.2 查看关键字
Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:【Win+R】调出【运行】弹窗>>>输入“cmd”>>>点击【确定】>>>在打开的界面中输入“python”>>>回车,进入 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']
5. 输出
Python 输出主要包括标准化输出、格式化输出、不换行输出、换行输出和更换间隔字符输出。
5.1 标准化输出
Python 编程中 print 的用法是输入 print(),括弧中可以是数字、变量、字符串、列表、元组合字典。需要注意的是:① print 一定要全部小写;② print 后边的括弧要在英文状态输入。
(1)括号内可以是字符串,需要用单引号或双引号括起来,比如:
print("Hello World")
print('Hello World')
执行以上代码,输出结果为:
Hello World
Hello World
(2)括号内可以是数字或者数字的运算,比如:
print(7)
print(7+5)
执行以上代码,输出结果为:
7
12
(3)括弧内可以是变量或者变量的运算,比如:
a = 4
b = 7*8/2
print(a)
print(b)
print(a+b)
执行以上代码,输出结果为:
4
28.0
32.0
(3)括号内可以是字符串和数字的组合,需要把数字用引号括起来作为字符串使用,比如:
print("My lucky number is", " 6 ")
执行以上代码,输出结果为:
My lucky number is 6
(4)括号内可以是字符串和变量的组合,比如:
a = 3
print("输出的数字为:", a)
执行以上代码,输出结果为:
输出的数字为: 3
5.2 格式化输出(%)
格式化是对字符串进行一定的格式显示或输出的方式,可以通过“%”,“format 函数”和“print(f"string")”实现。
% 符号可以实现字符串的格式化。在字符串内部 %() 表示特定格式字符串的占位,字符串右侧通过 % 连接要格式化的参数,它们和内部占位符 % 一一对应,中间不需要逗号连接。常用的格式符号如下:
i格式符号 | 转换 |
---|---|
%d | *有符号十进制整数 |
%s | *通过str()字符串转换来格式化 |
%i | 有符号十进制整数 |
%c | 字符 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写’e’) |
%E | 索引符号(大写"E") |
%f | 浮点实数 |
%g | %f和%e的简写 |
%G | %F和%E的简写 |
① %d 的使用,比如:
number = 6
print("My lucky number is %d" % number)
执行以上代码,输出结果为:
My lucky number is 6
② %s 的使用,比如:
print("My name is %s" % "Li Ming")
name = "Jenny"
print("Her name is %s" % name)
print("My name is %s"" and my lucky colour is %s" % ("Li Ming", "blue"))
执行以上代码,输出结果为:
My name is Li Ming
Her name is Jenny
My name is Li Ming and my lucky colour is blue
5.3 格式化输出(format函数)
format 函数是字符串内嵌的一个方法,用于格式化字符串。以大括号 {} 来标明被替换的字符串,语法格式为:“{}”.format()
(1)通过大括号 {} 的默认顺序依次匹配元组中的参数
str = "{} is a beautiful {}!".format("Beijing","city")
print(str)
执行以上代码,输出结果为:
Beijing is a beautiful city!
(2)通过索引的方式匹配参数
str1 = "{0} is a beautiful {1}!".format("Beijing", "city")
print(str1)
str2 = "{1} is a beautiful {2}!".format("Tianjin","Beijing", "city")
print(str2)
执行以上代码,输出结果为:
Beijing is a beautiful city!
Beijing is a beautiful city!
(3)通过参数名匹配参数
str1 = "{name1} is a beautiful {name2}!".format(name1="Beijing", name2="City")
print(str1)
执行以上代码,输出结果为:
Beijing is a beautiful city!
(4)混合使用
① 可以通过索引,参数名混合进行匹配,但命名参数必须写到最后,否则会报错:
str1 = "{0} is a beautiful {name}!".format("Beijing", name="city")
print(str1)
执行以上代码,输出结果为:
Beijing is a beautiful city!
② 可以通过默认顺序和参数名混合进行匹配,但命名参数必须写到最后,否则会报错:
str1 = "{} is a beautiful {name}!".format("Beijing", name="city")
print(str1)
执行以上代码,输出结果为:
Beijing is a beautiful city!
③ 不可以索引和默认顺序混合使用,否则会报错。
(5)通过对象的属性匹配参数
class Names:
Name1 = "Beijing"
Name2 = "city"
str1 = "{names.Name1} is a beautiful {names.Name2}!".format(names=Names)
print(str1)
执行以上代码,输出结果为:
Beijing is a beautiful city!
(6)引用参数部分
str1 = "The first letter of '{word}' is '{word[0]}'.".format(word="hello")
print(str1)
执行以上代码,输出结果为:
The first letter of 'hello' is 'h'.
(7)数字的处理
① 保留小数位数
str1 = "π is {:.2f}.".format(3.1415926) #保留两位小数
print(str1)
执行以上代码,输出结果为:
π is 3.14.
② 给数字加千位符
str1 = "{:,}".format(100000000)
print(str1)
执行以上代码,输出结果为:
100,000,000
③ 进制的转换
s1 = "{:b}".format(8) # 将数字8转换为二进制
print(s1)
s2 = "{:o}".format(8) # 将数字8转换为八进制
print(s2)
s3 = "{:x}".format(12) # 将数字12转换为十六进制
print(s3)
执行以上代码,输出结果为:
1000
10
C
(8)格式的处理
通过 :数字 指定转换后的字符串长度,不足的部分用空格补充:
s = "{:2}b".format('a')
print(s)
# 如果指定的长度小于参数的长度,按照原参数匹配
s1 = "{:2}World".format('Hello')
print(s1)
执行以上代码,输出结果为:
a b
HelloWorld
(9)字符的填充
可通过 :符号^数字 进行字符串的填充,其中数字为填充后的字符串总长度:
s = "{:*^10}".format('Hello')
print(s)
s = "{:-^20}".format('123456')
print(s)
执行以上代码,输出结果为:
**Hello***
-------123456-------
(10)匹配列表、字典中的参数
在 format 函数格式化时,可使用 * 或者 ** 对列表、字典和元组进行拆分。
① 匹配列表中的参数
list = ["Beijing", "city"]
str1 = "{} is a beautiful {}!".format(*list)
str2 = "{1} is a beautiful {0}!".format(*list)
print(str1)
print(str2)
执行以上代码,输出结果为:
Beijing is a beautiful city!
city is a beautiful Beijing!
② 匹配字典中的参数
dict = {"name1": "Beijing", "name2": "city"}
str1 = "{name1} is a beautiful {name2}!".format(**dict)
print(str1)
执行以上代码,输出结果为:
Beijing is a beautiful city!
5.4 格式化输出(frint(f’‘string={}’'))
在 Python 中,print(f"string={}") 是一种用于格式化字符串的语法结构。其中,“string”表示字符串;“f”前缀表示这是一个格式化字符串;“{}”是占位符,用于指示将要插入该位置的变量。注意:“f”后面一定要紧跟字符串,不能隔有空格,否则会报错。
a = 1
b = 2
c = 3
print(f"b={b}, c={c}, a={a}")
# 上面的代码等效于:
print("b={}, c={}, a={}".format(2, 1, 3))
执行以上代码,输出结果为:
b=2, c=3, a=1
b=2, c=1, a=3
5.5 不换行输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”,比如:
print("a")
print("b", end="")
print("c")
执行以上代码,输出结果为:
a
bc
5.6 换行输出
(1)print 默认输出是换行的,此外,在变量末尾加上 end=“\n” 可以在多个 print 函数的输出结果中实现换行,比如:
print("a")
print("b", end="")
print("c", end="\n")
print("d")
执行以上代码,输出结果为:
a
bc
d
(2)转义字符 \n 可以在 print 一次性输出的字符串中间换行,比如:
print("123456789---------")
print("123456789\n---------")
执行以上代码,输出结果为:
123456789---------
123456789
---------
(3)可以借助 for 循环和 while 循环实现换行输出,比如:
# for 循环实现换行输出
a = "hello"
for i in a:
print(i)
# while 循环实现换行输出
j = 0
while j <= 4:
print(a[j])
j += 1
执行以上代码,输出结果为:
```python
h
e
l
l
o
h
e
l
l
o
5.7 实现水平制表符输出
(1)在变量末尾加上 end=“\t” 可以在多个 print 函数的输出结果中实现水平制表符,比如:
print("a", end="\t")
print(end="")
print("b")
执行以上代码,输出结果为:
a b
(2)转义字符 \t 可以在 print 一次性输出的字符串中间实现水平制表符,比如:
print("123456789\t---------")
执行以上代码,输出结果为:
123456789 ---------
5.8 更换间隔字符输出
默认情况下,print() 函数一次性输出的两个字符串使用空格分隔,在变量末尾加上参数 sep =“” 可以修改间隔字符,比如:
print("www", "baidu", "com")
print("www", "baidu", "com", sep=".")
print("www", "baidu", "com", sep="/")
执行以上代码,输出结果为:
wwwbaiducom
www.baidu.com
www/baidu/com