首页 > 技术文章 > python学习笔记(一)

S031602219 2017-11-22 03:12 原文

Part 1.前言

刚开始接触python,所以难免在运行过程会遇到种种的小问题,这里就理一理自己遇到的一些小坎:

1.关于依赖库的缺失而造成的错误

python拥有丰富的库来提供给使用者们调用,但在使用前,你需要首先将库部署好,一般性操作步骤即简单的"缺什么装什么"。当你在cmd中运行你的.py文件时,你可能会遇到类似下面的错误提醒

这时候你所需要做的是

  1. 打开一个全新的cmd窗口;
  2. 在窗口中执行 pip install x 的命令 //这里的“x”即是你所要安装的库名

这里再贴上关于pip的使用说明,如图所示:(pip + "")

  • install 安装包
  • download 下载包
  • uninstall 卸载包
  • list 输出已安装包的列表

2.关于cmd交互式命令行模式下的注意点

在交互式命令行下执行循环语句时,回车后会出现,此时容易犯的问题如下

>>> for i in range(array):
... s=s+i;
  File "<stdin>", line 2
    s=s+i;
    ^
IndentationError: expected an indented block   #错误指出你循环没有缩进块

'''
正确的做法如下
for i in range(array):
...    s=s+i 
   ^^^        #键入空格以显示缩进
'''

Part 2.学习小细节摘要

1.关于input()

python中提供输入input()给用户输入字符串并存放到一个变量中。因为输入的是字符串,所以当你当你想要其他的类型时你需要将其转换。

# -*- coding: utf-8 -*-
n = int(input())    # 字符串转int类型
n = double(input())    #字符串转double类型

需要注意的是,这里的布尔类型不再像C、C++中那样接收"0"和"1",这里要么是"True"要么是"False"。

2.谈谈字符编码

常用的ASCII码占用的存储空间为1个字节,但他不支持其他语言的输入,所以有了Unicode编码来整合,但2个字节的Unicode使得存储空间大大增加,原本编码中常用的英文字母仅1个字节不得不占位成2个,这样显然不利于传输与存储,所以又有了可变长度的UTF-8编码的出现。传统的ASCII中内容保持1个字节的占位,其他则以1-6字节存储。

所以一句话总结:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。(详细了解可参见廖雪峰关于字符编码的详细说明)

3.关于几种数据类型的记录

1.list 列表
  • list用[]标识、定义
  • list.append(value) #末尾加入一个元素
  • list.count(value) #返回value该元素出现的次数
  • list.clear() #清空列表
  • list.extend(list_2) #可迭代入列表2
  • list.insert(position,value) #指定位置加入一个元素
  • list.index(value) #返回value该元素第一次出现的位置
  • list.pop(position) #返回position该位置的元素并把它删除
  • list.reverse() #内部元素反转
  • list.remove(value) #删除value该元素的第一次出现
  • list.sort() #内部元素排序
  • sorted(list) #返回排序好的列表但是不改变原来list的内部
2.tuple 元组
  • tuple用()标识、定义
  • tuple.count(value) #返回value该元素出现的次数
  • tuple.index(value) #返回value该元素第一次出现的位置
  • tuple和list非常类似,但是tuple一旦初始化就不能修改内部的value
3.dict 字典
  • dict用{}标识、定义
  • dictionary={'key':value} #dict使用键'key'来访问值value 例如:dictionary['key'] -> value
  • 字典内的key不重复,若一个key出现两个value与其匹配,则以最后出现的value为准
  • dict.clear() #清空字典
  • dict.copy() #返回一个dict的复制
  • dict.pop('key2') #删除字典中的key2及其携带的值,并返回其对应的值value
  • dict.get('key',flag) #返回字典中key对应的value值,不存在的话返回flag的值(默认返回None,跳过处理)
  • dict.items() #返回一个可遍历的以(key, value) 元组形式为元素的数组 例如:([(key1,value1),(key2,value2)])
  • dict.keys() #返回一个可遍历的以('key') 元组形式为元素的数组 例如:(['key1','key2'])
  • dict.values() #返回一个可遍历的以('value') 元组形式为元素的数组 例如:(['value1','value2'])
  • dict.update(dict2) #将dict2更新加入到dict中
  • dict['key2']=value2 #往字典dict中加入key2且其携带值value2
  • del(dict['key2']) #删除字典中的key2及其携带的值
4.set 集合
  • set和dict类似,也是一组key的集合,但不存储value,且key同样不能重复。
  • set用set([key])定义
  • set.add(key2) #集合内加入一项key2
  • set.update([keys,...]) #集合内加入n个新项keys
  • set.remove(key) #集合内删除一项key2
5.str 字符串
  • str用''标识、定义
  • str.count(s) ##返回s该字符或字符串出现的次数
  • str.find(sign,start,end) #返回s该字符或字符串在(start,end)区间内中首次出现的位置,若忽略区间的设置,则默认从头找到尾,未找到返回-1
  • str.index(sign,start,end) #功能与find基本一致,但未找到时直接报错
  • "s".join(list[]) #返回一个将list列表中各元素通过指定字符's'分隔开的新字符串
  • str.replace(old,new,count) #将str中的old字符或字符串替换为new的字符或字符串,count为替换的次数,默认值为全部
  • str.split('s') #将字符串以's'切割后,存放到并返回一个list

4.循环要点

  • 形式一:以 for x in array: 的形式,循环把数组array中的每个元素代入变量x中,然后执行缩进块的语句
  • 形式二:以 for i in range(len(array)): 的形式,通过i的更新,依次访问数组元素array[i]并执行缩进块的语句
    (注意:range(n)函数从0开始访问到n-1,最后一个元素不访问)

以上就是我本此初步基础学习的总结,小豪的程序员之路还在进行中,有不足的地方还希望大家指出,谢谢!

推荐阅读