初窥Python门缝了解入门路径

目录
  • 1 环境配置与基本运算
  • 2 调用各种包
  • 3 判断、循环
  • 4 函数
  • 5 数据结构
  • 6 字符串
  • 7 回到本地
  • 8 命令行版2048小游戏

此之谓入门,其标准是,在不计效率的情况下,可以使用这门语言实现一个不太复杂的功能。

当然,这个不计效率也不是毫无原则的不计,比如我可以1小时搞定,那么刚入门的新手需要1天甚至2天,他将需要大量的时间去查库查类查函数,但绝不至于用上一周半周的。

我从来都没学过python,当年只是受够了Matlab,而想把一个用Matlab写的类转成其他语言,结果用了一周,就把一个涵盖图像处理、数据拟合等功能的一千来行Matlab代码顺利转成了Python。过了没几年,Matlab就对我们禁用了,可见当年的选择是极为英明的。

那么如今让我重写一遍那个类,大概只需要一天不到。这就是新手和老手的区别,但也仅仅是新手和老手的区别。

从入门到熟练运用,需要的不是什么思维的提升,而仅仅是是一个字——用,或者更直观地说,就是看代码量。从这个意义上来说,越快入门,就可以更早地堆积代码量,从而更早地熟练运用Python,而不是按部就班地从入门到放弃。学习编程最可怕的事情就是:每天写一遍Hello World并感觉收获满满。

接下来,快速入门Python。

1 环境配置与基本运算

正所谓天下武功、唯快不破。学Python,讲求的就是一个快字。

尽管下载Python并安装并不麻烦,但新手往往会在使用过程中出现各种让人费解的问题。所以,如果想1小时入门,我推荐这个。

在线Jupyter编辑工具,进入之后,点击中间的Try JupyterLab,就可以进入在线Notebook的界面。

点击Python3,快速进入jupyter notebook的环境。然后按照直觉,写一些四则运算表达式,例如这些:

x = 100
y = 50
z = 2.5
print(x + y * z)
print(x - y / z)
print(x * y**2)

然后同时按下Ctrl+回车,就能运行python代码。

然后按下alt+回车,开启下一段代码。

如果用shift+回车,则会综合上面的两个功能,本节耗时:3分钟。

如果觉得在线Jupyter工具不好用,还有这个ideone,进入之后选择python,输完代码后选择run

2 调用各种包

在python中,通过import来完成包的调用。例如,我想调用一个日历的包,然后打印日历

import calendar
calendar.prcal(2021,m=4)	#2021年,每行4个月

然后shift+回车,就可以看到日历了。

如果想通过python进行科学计算,应用最多的包是numpymatplotlib中的pyplot,前者用于计算,后者用于绘图。通常二者被重命名为npplt。接下来演示一下二者的用法。

import numpy as np
from matplotlib import pyplot as plt

x = np.random.rand(100) #python中通过#进行注释
y = np.random.rand(100) #用于生成100个随机数
plt.scatter(x,y)        #绘制散点图,并存放在内存
plt.show()              #调用内存中的图,show给我们

本节需要记住的单词importasnumpymatplotlib.pyplotrandom.randscatterplt.show

本节耗时:5分钟。

3 判断、循环

如果想统计刚刚新建的xy中,有多少大于0.5,那么方法很简单,:新建两个变量用于存储二者的个数,然后跑一个循环进行判断。

xNum = 0
yNum = 0
for i in range(100):
    if x[i]>0.5:xNum += 1   # xNum += 1 即 xNum = xNum + 1
    if y[i]>0.5:yNum += 1   # python中通过方括号进行索引
print(xNum,yNum)

可以把range(100)理解为0到99这100个数组成的一个集合,for i in range(100)意味着i对这个集合进行遍历,遍历就是逐个复制给i,所以就完成了循环。

在python中,判断、循环结构通过:与其内容进行分隔,且子代码块需要通过空格进行标记。如果程序块中只有一行代码,则可以直接写在:后面。

如果想知道,x中处于 ( 0 , 0.3 ] , ( 0.3 , 0.6 ] , ( 0.6 , 1 ] (0,0.3],(0.3,0.6],(0.6,1] (0,0.3],(0.3,0.6],(0.6,1]这三个区间的数分别是多少,则需要用到if..elif

n1,n2,n3 = 0,0,0    #按照直觉理解即可
for i in x:
    if i>0.6 : n3 += 1
    elif i>0.3 : n2 += 1
    else: n1 += 1
print(n1,n2,n3)

for..in的作用是遍历某个集合,而x本身也是一个集合,所以也可以接受遍历。

本节需要记住的单词if, else, elif, for, +=,,耗时5分钟。

4 函数

如果想反复统计一组随机数的分布情况,显然不能每次都写一遍那么老长的代码,而是应该把代码封装到一个函数里面。

def statis(x):
    xNum = 0
    for i in x:
        if i>0.5:
            xNum += 1
    return xNum

在Python中,通过def新建一个函数,函数名字后的括号里是这个函数需要输入的变量。最后通过return来返回一个值。如果按照数学的那种表达式,以上代码差不多类似xNum=statis(x)这样的感觉。

在建了一个函数之后,就可以调用了,本节用时5分钟,需要记住defreturn

5 数据结构

我们刚刚说x是集合,这是不准确的。数学上的集合要求不能有重复元素,但x是随机生成的一个数组,所以并不能保证这一点。

在本节,我们要弄懂python中最常用的5种数据结构:元组、列表、字典、集合、数组,同时要掌握python推导式,预计耗时15分钟。

tpl = (1,2,3,4)     #此为元组tuple
lst = [1,2,3,4,5]   #此为列表list
dct = {"a":1, "b":2, "c":3} #此为字典dict
st = {1,2,3,3}      #此为集合
arr = np.array([1,2,3,4])   #此为数组

可以看到,尽管我们在新建集合的时候给了1,2,3,3,但集合中没有重复元素,所以只剩下一个3。

一句话区分这五种类型:

  • 只有数组np.array可以计算
  • 字典通过键值对(key-value)进行索引
  • 集合无重复元素,且不可索引
  • 元组可以作为字典的键,列表则不能。

这五种数据类型的详细区别如下(这个其实用不着记)。

索引方式 可计算 可哈希 元素可重复 指针式
tuple tpl[0] *
list lst[0] *
dict dct["a"] **
set *
np.array arr[0]

其中,可哈希暂时可理解为能够作为字典的key。

所谓指针式是我乱取的一个名字,意思是可以像指针一样把元素取出来。其中,集合与字典因为元素不可重复,所以并没有什么变化。

至于可计算就比较容易理解了,例如+测试,字典和集合干脆就报错了,而元组、列表将+重载为合并,只有arr执行了加法操作。

在python中,可通过len来获取这些数据结构的长度。

6 字符串

在字典中我们其实已经用过了字符串,在python中,用单引号或双引号来代表字符串,二者是等价的。

x = 'abc'
y = "abc"
print(x==y)

因为引号被用于字符串的标志,所以如果想在字符串中输入引号,则需要转义,转移符号为\。又因为\用于转义,所以\也需要转义。

print('\'')
print('\\')
print("\"")

7 回到本地

下载python,或者下载anaconda

如果下载之后,可通过win+r,输入cmd进入命令行,输入python进入python环境。

如果下载的是python,则通过pip isntall numpy安装numpy,总之其命令格式为pip install XXX;如果下载的是anacoda,则还可以通过conda install numpy来进行安装——当然,anaconda的基本环境已经安装了大部分常用包。

如果把python的代码封装到一个.py格式的文件中,然后就可以通过python XX.py进行调用,并执行。

8 命令行版2048小游戏

按理说看到这里,并写到这里,就应该算是完成了入门,那么接下来就要用入门学会的知识,写一个命令行版的2048小游戏。

2048的逻辑无非是操作4x4的方格,每个方格中有一个数,我们可以操作这些数字进行移动,如果两个相同的数字在我们的操作下相撞了,那么它们就可以合并了。

而这个4x4的方格,无非是一个矩阵。

我们的操作可以理解为输入字符,用wsad代表上下左右,y代表确定,n代表取消。

python接收字符的函数是input,例如

>>> x = input("input a number")
input a number5
>>> x
'5'

而创建矩阵,可以用np.zeros([4,4]).astype(int),表示创建一个 4 × 4 4\times4 4×4的全0矩阵,并化为整形。

矩阵中只有16个元素,尽管循环效率低下,但足以满足人的操作速度了。

如果读者从头到尾敲了所有的代码,那么如今必然有能力独立写出这样的程序。所以具体的代码将在下篇文章给出。

到此这篇关于初窥Python门缝了解入门路径的文章就介绍到这了,更多相关Python 入门内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python编程使用matplotlib挑钻石seaborn画图入门教程

    目录 scatter_plot lmplot jointplot 挑钻石第二弹 seaborn是matplotlib的补充包,提供了一系列高颜值的figure,并且集成了多种在线数据集,通过sns.load_dataset()进行调用,可供学习,如果网络不稳定,可下载到本地,然后在调用的时候使用把cache设为True. scatter_plot 官方的示例就很不错,绘制了diamonds数据集中的钻石数据.diamonds中总共包含十项数据,分别是重量/克拉.切割水平.颜色.透明度.深度.ta

  • python快速入门题目详解

    目录 九九乘法表 列表 元组(不可变序列) 集合 字符串 总结 九九乘法表 for i in range(1,10): for j in range(1,i + 1): print(str(j) + " * " + str(i) + " = " + str(i * j), end='\t') print() 列表 #列表插入操作 lis = [12,32,232,123,1234,1234,12345,12346,4563734,23452345] lis1 = l

  • Python入门:认识列表和元组

    目录 列表的特性 元组的特性 两者支持的操作 负数索引 切片操作 随意嵌套 相互转换 常用内置函数 存储方式的差异 性能对比 两者的使用场景 总结 提问:两个创建空列表的方法,哪个更快. 列表和元组,都是一个可以放置任何数据类型的有序集合. 列表的特性 动态的(mutable):长度大小不固定,可以随意地增加.删减或者改变元素. 会修改原来列表中的元素,而不会创建新的列表. # 新建一个列表 l = [1, 2, 'hello', 'world'] # 输出列表 l # 显示内容 [1, 2,

  • python入门之语言基础

    目录 1.注释 2.代码缩进 3.保留字 4.标识符 5.变量 6.基础数据类型 7.数据类型转换 总结 1.注释 注释是指在程序代码中添加的标注性的文字 单行注释:使用 # 注释内容 多行注释:在一对三引号('''注释内容''')或者("""注释内容""")之间,并且不属于任何语句的内容认为是多行注释## 标题 2.代码缩进 代码缩进是指在每一行代码左端空出一定长度的空白,从而可以更加清晰地从外观上看出程序代码的逻辑结构. 同一级别的代码缩进量

  • python扩展库numpy入门教程

    目录 一.numpy是什么? 二.numpy数组 2.1 数组使用 2.2 创建数组 1. 使用empty创建空数组 2. 使用arange函数创建 3. 使用zeros函数生成数组 4. ones函数生成数组 5. diag函数生成对角矩阵 6. N维数组 2.3 访问数组元素 三.了解矩阵 3.1 广播 一.numpy是什么? 扩展库numpy是Python支持科学计算的重要扩展库,是数据分析和科学计算领域如scipy.pandas.sklearn 等众多扩展库中的必备扩展库之一,提供了强大

  • Python从入门到实战之数据结构篇

    前言 我是栗子--专为小白准备<Python从入门到实战>内容. 这不是上一期刚讲完循环判断,还给大家出了很多新手的题目,边学边练习才有效果嘛. 时隔几天,大家都吼完了叭~实在没写完的慢慢复习,我更新文章也挺慢的!哈哈哈哈 今天想一想:要学数据结构啦~ 一.Python有那几种数据结构? Python 有四种数据结构,分别是:列表.字典.元组,集合.每种数据结构都有自己的特点,并且都有着独到的用处.为了避免过早地陷入细枝末节. 我们先从整体上来认识一下这四种数据结构:从最容易识别的特征上来说,

  • 一篇文章带你入门Python正则表达式

    目录 Python3 正则表达式 1.match函数 2.search函数 search和match的区别 3. sub函数 4.compile函数 5.findall 6.finditer 7.split 总结 Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.本文主要阐述re包中的主要函数. 在阐述re包中的函数之前,我们首先看议案正则表达式的模式,即使用特殊的语法来表示一个正则表达式. 1.match函数 re.match 尝试从

  • 初窥Python门缝了解入门路径

    目录 1 环境配置与基本运算 2 调用各种包 3 判断.循环 4 函数 5 数据结构 6 字符串 7 回到本地 8 命令行版2048小游戏 此之谓入门,其标准是,在不计效率的情况下,可以使用这门语言实现一个不太复杂的功能. 当然,这个不计效率也不是毫无原则的不计,比如我可以1小时搞定,那么刚入门的新手需要1天甚至2天,他将需要大量的时间去查库查类查函数,但绝不至于用上一周半周的. 我从来都没学过python,当年只是受够了Matlab,而想把一个用Matlab写的类转成其他语言,结果用了一周,就

  • Python实现通过文件路径获取文件hash值的方法

    本文实例讲述了Python实现通过文件路径获取文件hash值的方法.分享给大家供大家参考,具体如下: import hashlib import os,sys def CalcSha1(filepath): with open(filepath,'rb') as f: sha1obj = hashlib.sha1() sha1obj.update(f.read()) hash = sha1obj.hexdigest() print(hash) return hash def CalcMD5(fi

  • python框架flask入门之路由及简单实现方法

    路由 简单来说,路由就是一个url到函数的映射,通过路由规则,可以使得url被指定的函数进行处理解析. 我们都知道现在的web系统的URL都是可以自定义的,也就是我们可以指定url和具体的业务控制器相关联,而这些就是通过路由来实现的. flask中集成了路由处理模块,我们只需要简单地使用route装饰器就可以实现路由匹配. @app.route('/') def index(): return 'Index Page' @app.route('/hello') def hello(): retu

  • Python爬虫新手入门之初学lxml库

    1.爬虫是什么 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本.万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息. 2.爬虫三要素 抓取 分析 存储 3.爬虫的过程分析 当人类去访问一个网页时,是如何进行的? ①打开浏览器,输入要访问的网址,发起请求. ②等待服务器返回数据,通过浏览器加载网页. ③从网页中找到自己需要的数据(文本.图片.文件等等). ④保存自己需要的数据. 对于爬虫,也是类似的.它模仿人类请求网页的过程,但是又稍有不同.

  • Python OpenCV快速入门教程

    OpenCV OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用.该库是一个跨平台的开源库,是免费使用的.OpenCV库是一个高度优化的库,主要关注实时应用程序. OpenCV库是2500多种优化算法的组合,可用于检测和识别不同的人脸,实时识别图像中的对象,使用视频和网络摄像头对不同的人类动作进行分类,跟踪摄像机的运动,跟踪运动对象(例如汽车,人等),实时计数对象,缝合图像来产生高分辨率图像,从图像数据库中查找相似的图像,从使用闪光

  • python计算机视觉OpenCV入门讲解

    目录 前言 一.什么是计算机视觉 二.图片处理基础操作 图片处理:读入图像 图片处理:显示图像 图片处理:图像保存 三.图像处理入门基础 图像成像原理介绍 图像分类 四.灰度图像 五.彩色图像(RGB) 六.像素处理操作 读取像素 修改像素 使用python中的numpy修改像素点 七.获取图像属性 形状 像素数目 图像类型 八.图像ROI 九.通道的拆分与合并 拆分 合并 前言 本专栏将非常细致的讲解相关与计算机视觉OpenCV的相关知识即操作,非常的简单易懂.本文主要讲解相关与计算机视觉的相

  • Blender Python编程快速入门教程

    目录 Blender Python 编程 数据访问 访问集合 访问属性 数据创建/删除 自定义属性 上下文 Context 运算符 Operators (Tools) Operator Poll() 将 Python 集成到 Blender 的方式 示例运算符 示例面板 数据类型 原生类型 内部类型 Mathutils 类型 动画 Blender Python 编程 支持的特性: 编辑用户界面可以编辑的任何数据(场景,网格,粒子等). 修改用户首选项.键映射和主题. 使用自己的设置运行工具. 创

  • python基础之入门必看操作

    这里提供在使用python进行开发中常使用到的方法技巧,如有不对欢迎批评指正. 要点:开发中类.变量特性查询,类型就是类,断言的使用,深浅复制判断等 python脚本文件是使用UTF-8编码的,所以在发现中文字符出现乱码时应当考虑是否文本文件采用UTF-8编码. 如果想指定不同的编码需要在源码文件中开头处添加这样的注释: # -*- coding: utf-8 -*- 如果python在linux和unix系统中运行,需要在源码的第一行添加: #!/usr/bin/python3 如何获取pyt

  • python添加模块搜索路径方法

    1.函数添加 import sys sys.path sys.path.append("c:\\") 2.修改pythonpath(试不通) windows:PYTHONPATH 3.增加.pth文件(可以) site-packages或者python安装目录添加 xx.pth,文件内容为模块目录. linux(ubuntu)    /usr/local/lib/python2.7/dist-packages linux(redhat)    /usr/lib/python2.7/si

  • php面向对象(一) 初窥(php面向对象基础介绍)

    初窥php面向对象 1.类:类就是属性和方法的集合 是一个抽象的概念比如生活中的"人","汽车" 2.对象:对象是具体的事物 比如一叫"小强"的人 一辆叫"奥迪a7"的汽车 3.类和对象的关系:类是抽象的出来的某种事物的集合 对象是类的一个具体 实例1:创建一个Person类 第一步:声明一个Person类 class Person{ //Person类的成员属性 声明类的属性要用var关键字 var $name; var $

随机推荐