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']}