目录
2.1 Anaconda、conda、pip、virtualenv辨析
1、建立运行环境
1.1 安装jupyter notebook
使用终端创建虚拟环境:
$ conda create -n your_env_name python=X.X
进入虚拟环境,输入:
$ conda activate your_env_name
$ jupyter notebook
即可在浏览器中打开如下界面:
初始界面是否有文件取决于你的默认路径下(ubuntu中为/home)的文件内容,不用管他;
点击右上角新建,选择Python3
就可以获得一个代码与文本混合运行的笔记本,常用快捷键如下:
a:在当前cell上方新建一个cell
b:在当前cell下方新建一个cell
m:更改当前cell的模式(Code与标签)//或是选择单元格——单元格类型
其中标签的文字是符合markdown语法的
shift+Enter:运行代码或文本(如将*Hello World*渲染为斜体)
x:删除当前cell
ctrl+s:保存
TAB:自动补全代码
ctrl+/:注释一行
z:撤销
shift+z:anti撤销
1.2 初步使用
print中字符串格式化的方式还可用于多量输出时去掉空格。
每个print后直接默认换行,即使语句在同一行。
1.3 问题解决
如果在运行jupyter notebook时出现如下错误:
只需输入如下指令即可:
$ sudo apt install jupyter-notebook
$ jupyter-notebook
或者:
$ jupyter notebook
2 Anaconda详解
2.1 Anaconda、conda、pip、virtualenv辨析
Anaconda是一个集包管理器、环境管理器与众多开源包于一体的发行版本。可以在便捷地安装某个包的各个依赖包的同时保证这些包之间的版本对应。
conda是针对多种语言的包管理器与环境管理器的集合
pip是针对python的包管理器
virtualenv是环境管理器(需要的包及该包所依赖的各种特定版本的包的集合称为一个环境)
2.2 conda与pip细分
- pip:
- 不一定会展示所需其他依赖包。
- 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
- conda:
- 列出所需其他依赖包。
- 安装包时自动安装其依赖项。
- 可以便捷地在包的不同版本中自由切换
2.3 虚拟环境中的安装
apt:不可使用,会安装到系统目录中(如 /usr/bin/、/usr/share/、/var/cache/apt/archives/)
conda:~/home/user_name/anaconda3/envs/env_name/lib/python3.7/site-packages/
pip:默认环境安装路径/usr/local/lib/python2.7/site-packages/
虚拟环境安装路径与conda相同
3 python学习方法
3.1 python基本法则
- 大小写:严格区分大小写(全大写表示常量),必须是半角(英文)
- 一行程序:直接回车(只有在同一行才需要分号)
- 代码块:没有大括号,用缩进表示
- 注释:#
3.2 常用关键字
关键字:是保留字,不能用作变量名、函数名或任何其他标志符。
如if, in, for, break, and, def, not, while, else, False, reture, try, except, True, import, continue等
4 问题解决
4.1 选择题
Pass:占位,不起作用
%d:整数(decimal),%s:字符串,%f:浮点
转义: %和\
- zero: 筐里本来有东西,现在没有了
- None:筐都没有
- undefined:从来没提过有没有筐这事
想好了框架但里面干什么还没确定的时候就可以用pass
4.2 猜数字
而random.randint()为左闭右闭。
Python has a built-in function ord(). Just like another built-in function chr(), which is an abbreviation of the word “character”. The word that built-in function ord() abbreviate for"ordinal".It’s an abbreviation for “ordinal”. Ordinal numbers are counting numbers – i.e., 1, 2, 3. ord()converts the character into its (countable) position in the character set
ord()只能用于单字符
- 注意不要输错名字:)
- 在每一个进程里面,同一值对应的hash值是固定不变的;但重启kernal后,hash种子也会重置,其对应的hash值是有可能变化的。
- shift+Tab:减少一个缩进(与Tab一样,可选择段落操作)
4.2.1 详解hash与id函数
- hash():Return the hash value for the given object.(只对不可变元素有效)
- id():Return the identity of an object. CPython uses the object's memory address)(即内存地址)
- 垃圾回收机制:当没有名字指向某一块内存时,会有一个引用计数器,若长时间没有引用,则会删除该内存.
- 可变元素:值变地址不变,如整数、字符串、浮点、元组等。
- 不可变元素:值变地址也变(必须新开一块地址),如列表、字典等。
4.3 文字的加密
利用同一字符串进行加密:
4.3.1 答疑
1、替换:
pycharm:右键 —> refactory —> rename,只在同一命名空间中修改。
sublime text:ctrl + F 查找,在selected范围内find all替换即可(否则不区分命名空间)。
2、 函数中默认参数一定要放在所有参数声明的最右边。
3、各种语言中的取余:
r = a - n * [ a // n ]
其中,r是余数,a是被除数,n是除数。注意,[]表示向下取整。
例如:-123%10 = -123 - 10 * (-123 // 10) = -123 - 10 * (-13) = 7
4、函数是可以进行赋值操作的,如 a = print,但非函数(如for等)则不行。
5、可变类型输入到函数中,全局中的数值也会发生变化(在原地址对其数值进行改变)(函数的命名空间中的命名仍然指向原地址);不可变类型输入到函数中,全局中的数值不变(函数输入为在函数命名空间中复制出的一个新地址,输出指向的也是函数命名空间中的一个新地址,与其在全局中指向的地址没有关系)(一个副本)。
6、修改字符串中的某一个字符——切片和列表。
7、元组中无“,”时,表示的为括号内本身的值与类型,出现“,”即变为元组类型。
8、import一个模块,则这个模块中定义的各种都可以使用。
9、遍历的两种方法。
10、函数可以调用自己,即递归。
4.3.2 收获
1、列表:
- 用[]表示的一堆数即为列表,列表里还可以放置列表及各种类型元素、函数。
- 列表是有序的,即可以使用下标(集合、字典没有顺序)
- 元素可重复
- 为可变元素,传入函数会对全局产生影响
2、split使用
3、列表推导
最终代码实现::
alphabet_src = 'abcdefghijklmnopqrstuvwxyz'
alphabet_tar = 'defghijklmnopqrstuvwxyzabc'
def convert_char(single_char, operation):
global alphabet_src, alphabet_tar
result = ''
if single_char in alphabet_tar:
if operation == 'encrypt':
result = alphabet_tar[alphabet_src.index(single_char)]
elif operation == 'decrypt':
result = alphabet_src[alphabet_tar.index(single_char)]
else:
result = result + single_char
return result
def encrypt_it(src_str: str) -> str:
'''用于对字符串进行简单替换加密
输入参数:
src_str: 原始文本内容
返回结果: 加密文本
'''
encrypted_str = ''
for single_char in src_str:
encrypted_str += convert_char(single_char, 'encrypt')
# encrypted_str = ''.join([convert_char(single_char, 'encrypt') for single_char in src_str])
return(encrypted_str)
def decrypt_it(encrypted_str: str) -> str:
'''用于对字符串进行简单替换解密
输入参数:
encrypted_str: 加密文本内容
返回结果: 原始文本
'''
decrypted_str = ''
for single_char in encrypted_str:
decrypted_str += convert_char(single_char, 'decrypt')
return decrypted_str
assert('abcdefghijklmnopqrstuvwxyz!' == decrypt_it(encrypt_it('abcdefghijklmnopqrstuvwxyz!')))
print(encrypt_it('I love U!'))
print(decrypt_it(encrypt_it('I love U!')))
4.3.3 答疑
1、访问列表中的列表
2、语法糖的使用
语法糖在排序中的应用
3、学习指令
4、在列表中间插入、删除元素
python workout
python leetcode 算法层面练习,相当于给图求面积,不是应用题