Python基础知识—基础功能、循环、数据、判断
1、头部注释
- 什么是python头部注释
答:写在Python脚本第一行的用#号开头表示的信息就是头注释。
eg:coding:utf-8
- python头部注释的作用
答:被系统或解释器所调用
告知:
1)python解释器在哪?2)脚本编码格式是啥?
- 头注释的结构
答:注释符号+注释的内容 (# coding:utf-8)
- 常见头注释介绍
答:# coding:utf-8 定义coding则告诉系统脚本是何编码格式(更好的翻译中文,适合国内开发)
#!/usr/bin/env 定义#!,会去找指定路径下的python解释器(比较少用)
2、导入位置
- 导入的是什么
答:导入是将python的一些功能函数放到当前的脚本中使用
不导入的功能无法直接在当前脚本使用(除了python自带的内置函数)
- 为什么需要导入
答:导入已经写好的功能,减少开发时间,快速完成开发任务
- 为什么要放在头注释下边
答:先导入,才能使用导入的方法,程序是自上而下执行的
- Import os(内置导入函数+被导入的模块)
3、代码的执行顺序
- 如何执行
答:自上而下,逐行执行
- 什么是python的内置函数
答:不需要导入就可以使用的函数
- 第一个python的内置函数print的使用
答:将信息显示(显示)在控制台(cmd)上的函数
print(object, end= ‘’) (函数名(执行函数)+参数体,函数执行的必要数据,有了数据才能执行函数, end告诉在函数执行完之后该干什么,默认换行,如果end=‘’,则可以使其不换行)
# coding:utf-8
print('这是第一行print信息', end='')
print('今天晚上天气很好')
print('今天要早点休息吧')
print('你好', '小慕', '明天见')
4、Python的注释
注释的三种用法
- 三引号
""" 这是三引号注释的第一种 双引号形式,我们可以随意换行 持平 “”“
- 单引号
''' 这是三引号注释的第二种 单引号形式,功能与双引号完全一致 '''
# coding:utf-8
"""
这个脚本用作注释的练习
引号注释一般用在俩个地方
1: 是整个脚本的开篇,作用在于给别人介绍一下这个脚本的作用
2: 对于函数功能的解释,比如我们的print内置函数里面就有这样的注释
对于这样的注释,未来会在函数篇章介绍
"""
print('学习python是一个很有意思的') # 这是一个简单的注释练习
# 下边的1 2 是一个整体
print('1')
print('2')
5、python的执行入口
- 什么是脚本的入口
答:一般称代码执行的入口叫主函数main
- 脚本入口的写法
答:
__name__ == '__main__'
- 缩进
# coding:utf-8
import os
if __name__ == '__main__':
print("不同代码块,不同级别,该print语句属于 if...这个代码块的语句")
- 是否一定需要脚本入口
答:并不是
1)好规范,可以把需要的业务代码写到脚本的上方,然后在入口语句的缩进代码块中统一执行,代码结构清晰,容易维护
2)在像其他语言看齐,因为C++,Java都需要入口语法才可以执行!
6、input函数
- input函数的功能
答:接受一个标准输入数据,返回为string类型
- input函数的用法
答:
result = input('请输入一些内容:')
参数: 括弧内是一个提示字符串,用来告知用户需要填写的已知条件
# coding:utf-8
name = input('你的名字是:')
birthday = input('你的生日是:')
like_fruit = input('你喜欢的水果是:')
print('你的名字叫做:%s,出生于:%s,你喜欢的水果是:%s' %
(name, birthday, like_fruit))
7、变量与变量名
- 什么是变量
答:变量名=变量值(赋值语句)通过变量名赋值可以进行值的改变
- 变量存在哪里
答:每个变量被定义后存入一个内存块
- 变量名的规则
答:组成:必须是数字、字母、下划线组成
长度:任意长度,但不建议太长,20字符以内
要求:开头必须是字母、下划线
注意:区分大小写、有意义
# coding:utf-8
username = '小慕'
age = 20
is_sleep = 'ok'
dog_exists = 'yes'
a, b, c = 1, 2, 3 # python特殊用法
if __name__ == '__main__':
print(username)
print(age)
print(is_sleep)
print(dog_exists)
print(a, b, c)
8、三种方法标识字符串
- 使用英文单引号
>>> var = '我是小明'
>>> var
'我是小明'
- 使用英文双引号
>>> var = "小明是我"
>>> var
'小明是我'
- 使用英文三引号(可做到跨行书写文本)
>>> var = """
我是小明,
小明是我
kkkk
"""
>>> var
'\n\t\t\t我是小明,\n\t\t\t小明是我\n\t\t\tkkkk\n\t\t\t'
- 可以同时给多个变量赋值
>>> name1, name2, name3 = "Mike", "Jone", "Bob"
>>> name1, name2, name3
('Mike', 'Jone', 'Bob')
9、数学运算
小例子练习:
>>> num_of_files = 11
>>> print("系统里一共有", num_of_files, "个文件")
系统里一共有 11 个文件
>>> print("分11组,每组", num_of_files / 11, "个")
分11组,每组 1.0 个
其他运算符:
+: 加
-: 减
*: 乘
/: 除
%: 取模
**: 幂
//: 取整数
# 字符串可以相加
>>> src = "I'm a " + "Chinese!"
>>> src
"I'm a Chinese!
>>> # 故文字和数字也可以相加
>>> a = 1
>>> a += 1
>>> print("a = ", a)
a = 2
>>> a -= 1
>>> print("a = ", a)
a = 1
>>> a *= 10
>>> print("a = ", a)
a = 10
>>> a /= 2
>>> print("a = ", a)
a = 5.0
10、If
- If 语句,eg: (True/False)
>>> in_trash = True # False/True
>>> if in_trash:
print("可以彻底删除")
可以彻底删除
- If not 语句 eg:
>>> in_trash = True
>>> if not in_trash:
print("不可以被彻底删除")
无输出
>>> in_trash = False
>>> if not in_trash:
print("不可以被彻底删除")
不可以被彻底删除
- if-else
>>> in_trash = True
>>> if in_trash:
print("可以被彻底删除")
else:
print("不可以被彻底删除")
可以被彻底删除
- 判断条件
== : 等于
> : 大于
>= : 大于等于
< : 小于
<= : 小于等于
!= : 不等于
还可以叠加判断, eg:
2 < 3 and 2 < 5
2 > 3 or and 3 == 3 and 5 < 10
- If-elif-else
>>> today = 4
>>> if today == 1:
print("周一")
elif today == 2:
print("周二")
elif today == 3:
print("周三")
else:
print("周一周二周三之外的一天")
周一周二周三之外的一天
11、for和while循环
for循环
>>> for i in range(5):
print("新文件-" + str(i))
新文件-0
新文件-1
新文件-2
新文件-3
新文件-4
>>> for i in range(2,5):
print("新文件-"+str(i))
新文件-2
新文件-3
新文件-4
>>> for i in range(3, 10, 2):
print("新文件-" + str(i))
新文件-3
新文件-5
新文件-7
新文件-9
- range函数
• range(10):遍历从0开始,一直到10之前的10个数,也就是0-9
• range(2, 5):遍历从2开始,一直到5之前的3个数,也就是2-4 # 左开右闭
• range(3, 10, 2):遍历从3开始,一直到10之前,每俩次遍历一次,即遍历3, 5, 7, 9
while循环
- 和for循环的区别:
for:适合在有限的循环中
while:可以被用在无限循环中
即当你能想象你要遍历的序列有多长时,使用for循环,否则选择while循环
>>> while guess_num != 20:
guess_num += 1
print(guess_num)
11
12
13
14
15
16
17
18
19
20
12、continue和break
break:终止本次循环,并跳出一层循环!!!注意:一层!
continue:终止本次循环,直接进行下一次循环(也就是跳过了当前的循环)
仔细看看下面俩段代码:
>>> for i in range(10):
if i == 5:
break
print(i)
0
1
2
3
4
>>> for i in range(10):
if i == 5:
continue
print(i)
0
1
2
3
4
6
7
8
9
break:还可以用来跳出一个死循环!
>>> count = 0
>>> guess_num = 22
>>> while guess_num != 20:
guess_num += 1
count += 1
if count > 10:
break
print(guess_num)
23
24
25
26
27
28
29
30
31
32
13、数据种类
List列表
>>> files = ["f1.txt", "f2.txt", "f3.txt", "f4.txt", "f5.txt"]
>>> print("file[0] ", files[0])
file[0] f1.txt
>>> print("file[1] ", files[1])
file[1] f2.txt
>>> print("file[3] ", files[3])
file[3] f4.txt
>>> print("file[-1]", files[-1])
file[-1] f5.txt
>>> print("file[-3]", files[-3])
file[-3] f3.txt
- index索引:在Python中,==索引永远都是从0开始的。==索引也可以是负数,通俗来讲,也就是反着取东西,第一个反着取的序列号是-1
- 在python中,一次可以取出列表中的多个元素,相当于一行代码实现了一个for循环
>>> print("files[:3]", files[:3])
files[:3] ['f1.txt', 'f2.txt', 'f3.txt']
>>> print("files[2:4]", files[2:4])
files[2:4] ['f3.txt', 'f4.txt']
>>> print("files[-3:]", files[-3:])
files[-3:] ['f3.txt', 'f4.txt', 'f5.txt']
- 替换列表中的元素:
>>> print("old files[1] ", files[1])
old files[1] f2.txt
>>> files[1] = 12
>>> print("new files[1]", files[1])
new files[1] 12
可以看到, 在列表中,你可以存放不同类型的元素,字符,数字,甚至列表中还可以存放列表!!!
>>> list = [1, "file", ["2", 3.2]]
>>> print(list)
[1, 'file', ['2', 3.2]]
>>> list[2][0]
'2'
list[2][0],做了俩次索引,这个操作在列表中是允许的
Dict 字典
就是相当于给元素贴上标签,使得可以通过查询标签来确定元素,从而形成一个键值对<key, value>,其中每个key都是唯一的,value是多样的,可以是字符,数字,甚至列表,或者也可以是另一个字典!
>>> files = {"ID": 111, "passport": "my passport", "books" : [1,2,3]}
>>> print(files)
{'ID': 111, 'passport': 'my passport', 'books': [1, 2, 3]}
>>> print(files["books"])
[1, 2, 3]
>>> print(files["ID"])
111
>>> print(files["passport"])
my passport
- 修改字典元素,通过key值,将其所对应的value值进行修改
在字典中的元素不想列表,字典元素是没有顺序的,Python中OrderedDiect是有顺序的,但以后再说
>>> files["ID"] = 222
>>> print(files)
{'ID': 222, 'passport': 'my passport', 'books': [1, 2, 3]}
>>> files["ID"] = [2,3,4]
>>> print(files)
{'ID': [2, 3, 4], 'passport': 'my passport', 'books': [1, 2, 3]}
Tuple 元组
功能较单一,基本上都可以使用列表来替换元组,但元组有它的唯一特性,就是它里面的元素不可变
>>> files = ("file1", "file2", "file3")
>>> print(files[1])
file2
>>> files[1] = "OH"
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
files[1] = "OH"
TypeError: 'tuple' object does not support item assignment
# 元组的元素不可改变!
所以我们如果不希望它的值被改变的时候,我们可以考虑使用元组,用来存一些类似于常数、固定值等
Set合集
Set集合内只会存在非重复的元素,故而我们可以应用它来做交集并集等操作,
在集合中的元素,其实也是没有顺序的
>>> my_files = set(["file1", "file2", "file3"])
>>> print(my_files)
{'file1', 'file3', 'file2'}
>>> my_files.add("file4")
>>> print(my_files)
{'file1', 'file4', 'file3', 'file2'}
>>> my_files.add("file1")
>>> print(my_files)
{'file1', 'file4', 'file3', 'file2'}
>>> my_files.remove("file3")
>>> print(my_files)
{'file1', 'file4', 'file2'}
Tip: 不知道你发现了没有?
list初始化: xxx = [xxx]
字典初始化:xxx = {key: value, …}
元组初始化:xxx = (value1, value2 …)
Set初始化:xxx = set([value1, value2, …]) or xxx = {value1, value2}
>>> print(my_files)
{'file1', 'file4', 'file3', 'file2'}
>>> my_files.remove("file3")
>>> print(my_files)
{'file1', 'file4', 'file2'}
>>> print("my_files: ", my_files)
my_files: {'file1', 'file4', 'file2'}
>>> your_files = {"file1", "file3", "file5"}
>>> print("your_files: ", your_files)
your_files: {'file1', 'file3', 'file5'}
>>> print("交集 ", your_files.intersection(my_files))
交集 {'file1'}
>>> print("并集 ", your_files.union(my_files))
并集 {'file4', 'file3', 'file2', 'file1', 'file5'}
>>> print("补集 ", your_files.difference(my_files))
补集 {'file3', 'file5'}
在循环中运用
- len(files): 给出这个files列表的长度,常用在循环中
>>> files = ["f1.txt", "f2.txt", "f3.txt", "f4.txt", "f5.txt"]
>>> for i in range(len(files)):
if files[i] == "f3.txt":
print("I got f3.txt")
I got f3.txt
简化:
>>> files = ["f1.txt", "f2.txt", "f3.txt", "f4.txt", "f5.txt"]
>>> for i in files:
if i == "f3.txt":
print("I got f3.txt")
I got f3.txt
- 使用for蓄奴汉对字典进行简化的应用
dict.items(): 遍历字典中每个键值对
dict.keys():遍历字典中每个key值
dict.values():遍历字典中每个value值
>>> dicts = {"ID": 111, "password: ": "password", "book": [2,3,4]}
>>> for key in dicts.keys():
print("key: ", key)
key: ID
key: password:
key: book
>>> for values in dicts.values():
print("values:", values)
values: 111
values: password
values: [2, 3, 4]
>>> for key, value in dicts.items():
print("key: ", key, ", value: ", value)
key: ID , value: 111
key: password: , value: password
key: book , value: [2, 3, 4]
自带函数
- 列表的添加与删除(append与pop)
>>> files = []
>>> for i in range(5):
files.append("f"+str(i)+".txt") # 添加
print("has", files)
has ['f0.txt']
has ['f0.txt', 'f1.txt']
has ['f0.txt', 'f1.txt', 'f2.txt']
has ['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt']
has ['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt', 'f4.txt']
>>> for i in range(len(files)):
print("pop", files.pop()) #从最后一个开始pop出
print("remain", files)
pop f4.txt
remain ['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt']
pop f3.txt
remain ['f0.txt', 'f1.txt', 'f2.txt']
pop f2.txt
remain ['f0.txt', 'f1.txt']
pop f1.txt
remain ['f0.txt']
pop f0.txt
remain []
- 列表的扩充(extend), 按位置插入(insert), 移除某索引(del), 移除某值(remove)
>>> files = ["f1.txt", "f2.txt"]
>>> # 扩充入另一个列表
>>> files.extend(["f3.txt", "f4.txt"])
>>> print("extend", files)
extend ['f1.txt', 'f2.txt', 'f3.txt', 'f4.txt']
>>> # 按位置添加
>>> files.insert(1, "file5.txt") # 添加入第1位(其中首位为0)
>>> print("insert", files)
insert ['f1.txt', 'file5.txt', 'f2.txt', 'f3.txt', 'f4.txt']
>>> # 移除某索引
>>> del files[1]
>>> print("del", files)
del ['f1.txt', 'f2.txt', 'f3.txt', 'f4.txt']
>>> # 移除某值
>>> files.remove("f3.txt")
>>> print("remove", files)
remove ['f1.txt', 'f2.txt', 'f4.txt']
- 字典的get(), update(), pop()功能
>>> files = {"iD": 111, "passport": "my passpord", "books": [1,2,3]}
>>> # 按key拿取,并在拿取失败的时候给一个设定好的默认值
>>> print('files["ID"]:', files["iD"])
files["ID"]: 111
>>> print('files.get("ID")', files.get("iD"))
files.get("ID") 111
>>> # 将另一个字典补充到当前字典
>>> files.update({"files": ["1","2"]})
>>> print("update:", files)
update: {'iD': 111, 'passport': 'my passpord', 'books': [1, 2, 3], 'files': ['1', '2']}
>>> # pop 调一个item,和列表的pop类似
>>> popped = files.pop("iD")
>>> print('popped:', popped)
popped: 111
>>> print("remain:", files)
remain: {'passport': 'my passpord', 'books': [1, 2, 3], 'files': ['1', '2']}