python之路 day1 -python 基础1

本节内容从Alxs 博客抄袭而来html

 

1、Python 介绍python

Python 的创始人是 吉多.范罗苏姆 在1989 年的圣诞节期间 为了打发时间 开发了 一个新的脚本解释程序,做为ABC语言的一种继承。c++

目前Python排名大约第五 有上升的趋势 Python崇尚优美、清晰、简单,是一个优秀并普遍使用的语言web

目前python 主要应用领域:正则表达式

  云计算 、web开发、科学运算、人工智能 、系统运维、金融图形GUI算法

PYTHON 在一些公司的应用:express

谷歌:GOOGLE APP ENFINE 、code.goojle.com、google earth、谷歌爬虫、Google广告等编程

CIA:美国中情局网站c#

YouTube:世界最大的视频网站windows

Dropbox 美国最大的在线云存储网站

Facebook

Redhat 世界最流行的Linux 发型版本中的yum包管理工具就是用Python开发的

豆瓣:国内几乎全部的雨雾俊是用过Python开发的

知乎 :国内最大的问答社区 经过Python开发的(国外quora)

春雨医生 

除了上面还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、土豆、新浪、果壳等都在使用Python完成各类各样的任务

Python 是一门什么样的语言?

变成语言主要从如下几个角度进行分类

编译和解释的区别是什么?

编译器是吧源程序的每一条语句都变编译成机器语言,保存成二进制文件,这样运行时计算机能够直接以机器语言运行次程序,速度很快

而 解释器则是值在执行程序时 才一条一条的解释成机器语言给计算机来执行,因此运行速度是不如编译后的程序运行的速度快

 

 

 

 

 

 

 

 

 

编译型vs解释型

编译型

有点:编译器通常会有预编译的过程对代码进行优化。由于编译只作一次,运行时不须要编译,因此编译型语言的执行效率高。能够脱离语言环境独立运行。

缺点:编译以后若是须要修改须要修改整个模块从新编译,编译的时候根据环境生成机器码,不一样的操做系统之间移植就会有问题,须要根据运行的操做系统环境编译不一样的可执行文件。

解释型

有点:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了计时器(虚拟机)、灵活,修改代码的时候直接修改就好,能够快速部署,不用停机维护。

缺点:每次运行时都要解释一遍,性能上不如编译型语言

 

汇编语言就是低级语言  从人类思惟出发的计算机语言是高级语言

 

编译与解释

动态语言和静态语言 

动态型语言:动态型语言是指在运行期间采起作数据类型检查的语言,也就是说 在动态类型语言编程 的时候是不用给定变量的数据类型,在编程的过程当中改语言会根据变量的赋值,在内部将数据类型记录下来。Python 和Ruby 就是一种典型的动态编程语言

静态类型 :静态语言和动态的类型刚好相反,他的数据类型是在编译期间检查的,也就是说在写代码的过程当中要声明变量的类型。c/c++ 是静态语言的典型,其余静态类型语言还有c# Java 

强类型定义语言和若类型定义语言

一、强类型定义语言 是指一旦变量的类型指定为某个数据类型,若是不通过强制转换,那么他永远就是这个数据类型了  

二、若类型定义语言  数据类型能够被忽略的语言。它与强定义语言相反,一个变量能够赋予不一样类型的数据类型。

 

强类型定义语言的速度上可能逊色与若类型定义语言。可是强类型定义语言带来的严谨能都有效的避免许多错误。

总结:

  经过以上的介绍,得知Python是 动态解释型的强定义类型语言

 

python 的有点和缺点

一、Python 定位是优雅、明确 、简单,因此Python程序看上去老是简单易懂,初学Python 不但入门容易,二期未来深刻下去,能够编写那些很是复杂的程序

二、开发效率很是高,Python有很是强大的第三方库,基本上你想经过计算机实现任何功能,Python官方库里都是有相应的模块进行支持,直接下载调用后,在基础库的基础上在进行开发,会大大下降开发周期,避免重复开发

三、高级语言----当你使用Python编程的时候 你无需考虑注入如何管理你的程序使用内存一类的底层细节

四、可移植性-----因为他的开源本质Python 已经被移植 在许多平台上。若是你当心的避免使用以来与系统的特性,那么你的全部Python 程序无需修改就你胡能够在市场上全部的系统平台上运行

五、可扩展性------若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,你能够吧一部分程序用c或者c++编写,而后在你的Python 程序中使用它们

六、可嵌入性---- 你能够把Python嵌入你的c/c++程序,从而向你的程序用户提供脚本功能。

有点总结 

优雅 明确 简单 、开发效率高、高级语言、可移植性、可扩展性、可嵌入

 

缺点

一、速度慢Python的裕兴速度相比c原缺失很慢 跟Java相比也是要慢一些,所以这也是不少的所谓的大牛不屑于使用Python的主要缘由,可是其实小河里所致的运行速度慢在大多数状况下用户是没法直接感知到的必须借助工具

2 代码不能加密   Python是解释型语言  他的代码都是以名文的形式存放 

三、线程不能利用多CPU问题,这是Python被人诟病最多哦的一个缺点GIL 是全局解释器锁(global inerpreter lock),是计算机程序设计语言解释器用语同步线程的工具,使得任什么时候刻仅有一个线程在执行,Python的线程是操做系统的原生线程。在Linux上为pthread, 在windows 上为winthread,彻底由操做系统调度线程的执行。一个Python解释器进程内有一条主线程,以及多条用户程序的执行线程。及时在多核CPU平台上,因为GIL的存在,因此禁止多线程的并行执行,。关于这个问题折中解决方法,咱们在之后线程和进程章节里在进行详细探讨。

 

 

5、Holleworld 程序

 print(“hello world!”)

 

 

6、变量|字符编码

变量的声明

name=“hoffman”

Python 是动态语言不须要定义变量类型 

变量的定义规则 

》变量只能是 字母数字下划线的任意组合

》变量的第一个字符不能是数字

》变量不能是关键字

》变量命名要见名知意

 

 7、字符编码

Python解释器在加载  .py  文件中的代码是,会对内容进行编码(默认ascill)

ASCII(American standard code for information interchange,美国标准信息交换代码)

python  3  是支持中文的  

utf-8  

注释 

单行注释用#

多行注释用“”“”备注是内容“”“”  使用成对的三引号

8、用户输入 

#!/usr/bin.env python  (env  表示取环境变量)

#_*_coding:utf-8_*_

#name=raw_input("what is your name?")

#在Python 3 中的输入是

name=input(“what your name?”)

 

 输入密码

 

Python3 中 

 

import getpass 

pwd=getpass.getpass("请输入密码:")

#输入的内容会被隐藏 看不到

print(pwd)

 

(注意  这里引用 getpass 包 在pycharm  中是很差用的 )

 

 

 

 其余先跳过 

十一 数据类型 

一、数字

 

int(整型)

-2**31~2**31 (31位机器)

-2**63~2**63-1(64位机器)

 Python中没有指定长整形的长度 可是因为机器内存有大小 因此长整型和内存有关系

整型过长是 Python自动转换成长整型

float(浮点数)

浮点数是用来处理实数的,既带有小数的数字。相似于C语言中的double 类型。 占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号

 

complex(复数)

  复数由实数部分和虚数部分组成,通常形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
 
二、布尔型 
真或者假
1或者0
true or false
三、字符串(string)
使用单引号 或者 双引号  或者三引号
name=“Holle world”
name2=‘Holle world’

若是是使用单引号 的字符串 字符串中间出现一个单引号就会报错  

这是可使用一个\'  来转译

使用三引号程序可以原格式输出

name3=“”“”ahsdof

jalsdjfkasf   

asdfasdf''''''

print(name3)

结果会是 保持原格式输出  包括空格 和回车

 

基本的字符串运算

  •  len()函数

能够计算字符串的长度

  • 拼接   +

name=name1+name3

这样就把两个字符串拼接起  拼接只能拼接字符串

  • 重复 *

name=name*3

表示吧name 拼接三次赋值给name

还能够写成3*name   

这里只能乘以一个整数 不然是错误的  

  •  in

 判读一个字符串是不是另外一个字符串的子串(这里面大小写是敏感的)

返回值:true 或者false

‘a’ in name

结果是  true 

  • for语句

 他的含义是枚举字符串中的每一个字符

定义字符串

>>>my_str= 'holle world'

#char 表明定义的变量

>>>for char in my_str:

  print(char)

结果为

>>>

 h

o

l

l

e

 

w

o

r

l

d

 

举例  编写一个 vowels_count 函数 计算一个字符串中的元音字母(aeiou或者AEIOU)的数目

#Author:hoffman
#计算一个字符串中的元音字母的个数

my_str=input("请输入一个字符串:")

def vowels_count (str):
count = 0
for char in str:
if char in "aeiouAEIOU":
count+=1
return count
print (vowels_count(my_str))
  • 字符串索引(index)

一、字符串中每一个字符都有一个索引值(下标)

二、索引从0(前向后) 或者-1(后向前)开始

forward 0 1 2 3 4 5 6
  h e l l o w o
backward -7 -6 -5 -4 -3 -2 -1

 

 

 

三、索引的运算符[ ]

 name="hello world"

 name[0]    就是  h

name[-1]  就是 d

 这样就得到了字符串中的一个字符    这里的索引数字不能超出范围  不然或报错

  • 切片slicing

 一、经过切片能够得到字符串的一段字符

二、语法为

  [start : finish:countby]

start  表示从字符串索引的第几个索引的后一个开始 

finish 表示 到第finish 这个索引的字母的前一个字母结束

使用若是不提供 start  就表示从头开始

若是不提供 finish 表示一直到结尾

countby 是计数参数    这和range  中的步长是 一直的 

默认是 1   可是根据须要能够改变   

start  和finish 都不写 countby 写-1 就能够得到元字符串的一个逆序

 #Author:hoffman

str="alkjsdflkjaslkdf"
print(str[::-1])

 >>>fdklsajklfdsjkla

  •  字符串不可变 

字符串一旦生成是不能随意的被改变的 

Python是动态编译强定义类型 

列如  

name=“”Holle world”

name[2]='a'

想把索引为2的字符换掉是不行的 

若是确实想换只能这样

name=name[:1]+'a'+name[2:]

使用切片和拼接 而且还要覆盖元字符串

#Author:hoffman
str="alkjsdflkjaslkdf"
str=str[:1]+'a'+str[2:]
print(str)
>>>aakjsdflkjaslkdf

以上方法是比较繁琐的
咱们可使用字符串方法
对象提供的函数
str.replace(old,new)
生成一个新的字符串,其中使用new子串 替换 old子串

例如:
#Author:hoffman
str="alkjsdflkjaslkdf"
str= str.replace('a','c')
print(str)

 >>>clkjsdflkjcslkdf

注意:调用replace()方法返回一个新的字符串,原来字符串是没有改变的,要是想改变原来值 就把生成的字符串赋值给原来的变量

str.find('l') 

find 函数是查找一个字符串中的子串的下标

split

就是将一个字符串切分红片  

  • 字符串的格式化输出
#Author:hoffman
#一下代码实现了原格式输出
name=input("name:")
origin=input("make_address:")
age=int(input("age:"))
print(type(age))
salary=float(input("salary float:"))
gender=input("gender:")
#拼接输出使用%s %d %f 分别表示字符串 数字 单精度数字
inof1 ="""
----------info of %s-----
name:%s
origin:%s
age:%d
salary:%f
gender:%s
""" %(name,name,origin,age,salary,gender)
print(inof1)
#使用 {} 和.format()
inof2="""
--------info of {_name}----
name:{_name}
origin:{_origin}
age:{_age}
salary:{_salary}
gender:{_gender}
""".format(_name=name,_origin=origin,_age=age,_salary=salary,_gender=gender)
#这里面少了一个)_name
print(inof2)
#使用 {0} {1}表示占位
inof3="""
--------info of {0}----
name:{1}
origin:{2}
age:{3}
salary:{4}
gender:{5}
""".format(name,name,origin,age,salary,gender)
print(inof3)

四、列表
建立列表:
1
2
3
name_list  =  [ 'alex' 'seven' 'eric' ]
name_list =  list ([ 'alex' 'seven' 'eric' ])

基本操做:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含
五、元组(不可变列表)
建立元组:
1
2
3
ages = (1122334455)
ages = tuple((1122334455))
 
 
六、字典(无序)
建立字典:
1
2
3
person  =  { "name" "mr.wu" 'age' 18 }
person  =  dict ({ "name" "mr.wu" 'age' 18 })

经常使用操做:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

七、正则表达式(regular Expressions)

 . 表示任意字符

[a-z] 表示一个小写字母

\d+ 表示一系列数字

#Author:hoffman
#re 表示调 包 正则表达 regular expressions re是缩写
#name.txt 文件每一行是一个字符串 姓名
#判断一我的名中是否含有c.a 模式
import re
f =open('name.txt')#打开name这个文件 打开文件 有 可读可写 具体百度
pattern='(c.a)'
for line in f:#遍历f这个文件 一行一行遍历
name = line.strip()#去除一行中首位的空格
result = re.search(pattern,name)#search()函数判断c.a 模式是否在 name中
if result:
print ('Find in {}'.format(name))
f.close()


Python strip()方法

Python 字符串 Python 字符串


描述

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。

语法

strip()方法语法:

str.strip([chars]);

参数

  • chars -- 移除字符串头尾指定的字符。

返回值

返回移除字符串头尾指定的字符生成的新字符串。

实例

如下实例展现了strip()函数的使用方法:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- str = "0000000 Runoob 0000000"; print str.strip( '0' ); # 去除首尾字符 0 str2 = " Runoob "; # 去除首尾空格 print str2.strip();

以上实例输出结果以下:

     Runoob Runoob


12、数据运算

 

 

相关文章
相关标签/搜索