【转载】Python简介及入门

原文出处:https://www.cnblogs.com/zhangyafei/articles/10107110.html

计算机原理基础

?
1
2
3
4
5
6
7
前提: 简述 cpu 内存 硬盘 操作系统 应用程序
cpu: 计算机的运算核心和控制核心,就好像人类的 '大脑'
内存: 负责数据与cpu直接数据交流处理,将临时数据和应用程序加载到内存,然后交由cpu处理。
       4g , 8g , 16g , 32g
       造价高,断电即消失
硬盘: 磁盘(d盘,e盘)长久的存储数据:文件,应用程序。片二等数据,断电不消失
操作系统: 控制调度 硬件与软件资源额计算机程序,它是计算机最大的软件

一、Python的由来

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  

  最新的TIOBE排行榜,Python重回前三

  

  

  由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!!

  Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。

1.为什么是Python而不是其他语言?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C 和 Python、Java、C #等
 
     C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
 
其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
 
Python 和 C  Python这门语言是由C开发而来
 
  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10 行代码可以解决,C可能就需要 100 行甚至更多.
  对于速度:Python的运行速度相较与C,绝逼是慢了
 
Python 和 Java、C #等
 
  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
  对于速度:Python在速度上可能稍显逊色

所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。

2.Python的种类

?
1
2
3
4
5
6
7
8
9
Cpython
     Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
Jyhton
     Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
IronPython
     Python的C #实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
PyPy(特殊)
     Python实现的Python,将Python的字节码字节码再编译成机器码。
RubyPython、Brython …

3.python的语言分类

?
1
2
3
4
5
6
7
8
解释型:将代码一行一行的解释成二进制,然后逐行执行。
     缺点:执行效率低。
     优点:开发效率高,可以跨平台。
     代表语言:python。
编译型:将代码全部一次性编译成二进制,然后在执行。
     缺点:开发效率低,不能跨平台。
     优点:执行效率高。
     代表语言:C。

4.python的优缺点

?
1
2
3
4
5
6
7
8
9
10
11
12
优点:
     1 ,优美清新简单,入门容易,如果深入研究,可以写出非常非常复杂的程序。
     2 ,开发效率高。
     3 ,高级语言。
     4 ,可移植性。
     5 ,可嵌入性。
     6 ,可拓展性。
 
缺点:
     1 ,运行速度慢。
     2 ,源码不能加密。
     3 ,由于有GIL锁的存在,不能利用多线程。

5.python2和python3的区别

?
1
2
3
4
5
6
7
源码上的区别:
     pyhton2x:源码不规范。源码重复率较高。源码冗余。
     python3x:源码识重新整合,符合优美清晰简单的原则。
 
编码方式的区别:
     python3x:编码方式默认是utf - 8 ,可以支持中文,英文。
     python2x:编码方式默认是ASCII,只包含英文字母,数字,特殊字符如果想显示中文:在首行加上 # -*- encoding:utf-8 -*-。

二、Python环境

  1.安装Python

  windows

复制代码
1.下载安装包:
  https://www.python.org/downloads/  选择对应版本的Python下载即可
2.安装路径:默认C盘
  路径也可以选择。比如D:/python3
3.配置环境变量
  不过要记得配置环境变量
     【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
复制代码

  linux

    无序安装,系统自带

  2.更新Python

   windows:卸载重装即可

  3.安装第三方包

    pip install package_name  或者 在pycharm中settings中安装

三、Python入门

  1.第一个python程序

复制代码
#coding=utf-8
#-*- coding:utd-8 -*-
print("hello haha")
#以下代码用来打印一个信息
# 单行注释 # 多行注释
'''
print("hello world")
print("hello world")
print("hello world")
print("hello world")
'''
复制代码
 第一个Python程序注意点:
    运行方式有两种:
        (1)在编辑器中编辑好py文件,保存。在命令行下到当前目录执行python 文件名.py
        (2)在有python编译环境的编辑器里直接点解运行即可。如eclipse,pycharm。

  Python内部执行流程

2.

  2.pyc文件

    执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

    ps:代码经过编译

    可以产生字节码;字节码通过反编译也可以得到代码。

  3.变量的定义和使用 

  变量的定义
  name = zhangyafei #定义了一个变量,这个变量的名字叫做name,它里面存储了一个数值zhangyafei
  变量的作用:昵称,其代指内存里某个地址中保存的内容

 
 
变量定义的规则
1.变量名只能是 字母、数字或下划线的任意组合
2.变量名的第一个字符不能是数字
3.以下关键字不能声明为变量名
  ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
复制代码
变量的赋值
score=100  #定义了一个变量,这个变量的名字叫做score,它里面存储了一个数值100
high = 180   #单位是cm  appleprice = 3.5 #苹果的价格 元/斤 weight = 7.5 #购买的苹果的重量 斤  money = appleprice * weight #如果money是第一次的话,那么就表示定义这个变量  money = money - 10 #如果money=xxxx不是第一次出现,那么就不是定义一个变量,而是给这个变量附上一个新的值
复制代码

  4.输入、输出函数input(),print() 

复制代码
 # -*- coding:utf-8 -*-

 #1.使用input获取必要的信息
name =input("请输入名字:") qq=input("请输入qq:") #2.使用print来打印名片 print("="*20) print("姓名:%s"%name) print("qq:%s"%qq) print("="*20)
复制代码

  输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

import getpass
 
username = input('请输入用户名:') pwd = getpass.getpass('请输入密码:') print(username,pwd)

  5.流程控制与缩进

    需求一:用户登录验证  

1 # 提示输入用户名和密码
2  
3 # 验证用户名和密码 4 # 如果错误,则输出用户名或密码错误 5 # 如果成功,则输出 欢迎,XXX!
import getpass
 
name = input('请输入用户名:') pwd = getpass.getpass('请输入密码:') if name == "zhangyafei" and pwd == "nb": print("欢迎,zhangyafei!") else: print("用户名和密码错误"
View Code

    需求二、根据用户输入内容输出其权限

1 # 根据用户输入内容打印其权限
2  
3 # zhang --> 超级管理员 4 # chen --> 普通管理员 5 # zhao --> 业务主管 6 # 其他 --> 普通用户
 1 # -*- coding: utf8 -*-
 2  
 3 name = input('请输入用户名:')  4  5  6 if name == "zhang":  7 print("超级管理员")  8 elif name == "chen":  9 print("普通管理员") 10 elif name == "zhao": 11 print("业务主管") 12 else: 13 print("普通用户"
View Code

  6.基本数据类型

   (1)数字

复制代码
  2 是一个整数的例子。
  长整数 不过是大一些的整数。
  3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
  (-5+4j)和(2.3-4.6j)是复数的例子。

  int(整型)

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647     在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
  long(长整型)    跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。     注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。   float(浮点型)    浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。   complex(复数)     复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
  注:Python中存在小数字池:-5 ~ 257
复制代码

  (2)布尔值

  真或假
  1 或 0

        详情请看Fslse和None的区别

(3)字符串:用' xx' |"xx" | '''xx'''|"""xx"""连接的在python中叫字符串 

  万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
    字符串格式化
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 28 20:45:07 2018

@author: Zhang Yafei
"""
""" 格式化字符串的方式 方法一(%) """ # 格式的字符串与被格式化的字符串必须一一对应,需格式化的字符串多时,容易搞混 print('hello %s, you sex is %s.' %('tab', 'boy')) # hello tab, you sex is boy. print('hello %s, you sex is %s.' %('boy', 'tab')) # hello boy, you sex is tab. # 通过字典方式格式化,哪个字符将会格式化到哪里,清晰命了 print('hello %(name)s, you sex is %(sex)s.' %{'name': 'tab', 'sex': 'boy'}) # hello tab, you sex is boy.  args = {'name': 'tab', 'sex': 'boy'} print('hello %(name)s, you sex is %(sex)s.' %(args)) # hello tab, you sex is boy. #方法二(.format) # 跟方法一第一种方式有点类似的格式化方式 print('hello {0}, you sex is {1}.'.format('tab', 'boy')) # hello tab, you sex is boy. # 注意:用字典方式格式化时,指定格式化字符时的位置可以调换 print('hello {name}, you sex is {sex}.'.format(sex='boy', name='tab')) # hello tab, you sex is boy. # '**'起到解包的作用 args = {'name': 'tab', 'sex': 'boy'} print('hello {name}, you sex is {sex}.'.format(**args)) #推荐使用 .format 方法进行格式化字符串,一来清晰明了,二来效率更高(format 是字符串 # str 内置的方法)。更多关于 .format 的用法文档,用户可在交互模式下(终端输入 python # or ipython or bpython ) 输入 help(str.format) 查看
View Code
字符串常用功能:
    • 移除空白 -> strip()
    • 分割 -> split()
    • 长度 -> length
    • 索引 -> []
    • 切片 ->[:]

 (4)列表

  创建列表

nums = [11,22,33,44,55]

基本操作:

    • 索引 -> [index]
    • 切片 ->[start:end]
    • 追加 ->append,extend
    • 删除 -> pop,remove,del
    • 长度 -> len
    • 循环 -> 可迭代对象 
    • 包含 ->contrains

 (5)元组

  创建元组

ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
基本操作:
    • 索引 -> [index]
    • 切片 ->[start:end]
    • 循环 -> 可迭代对象
    • 长度 -> len
    • 包含 ->contains

 (6)字典(无序)

person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})

常用操作:

    • 索引 -> [index]
    • 新增->dict[key]=value
    • 删除 -> del dict[key]
    • 键、值、键值对 -> key,value,key:value
    • 循环:可迭代对象
    • 长度:len

(7)集合

a = {11,22,33,44,55,66,77} a = set(11,22,33,44,55,66,77)

常用操作:

  • 新增 -> add
  • 删除 -> pop
  • 交 -> &
  • 去重 ->重点
  • 并 -> |
  • 补 -> difference
PS:循环,range,continue 和 break
7.运算符
  复合赋值运算(+-*/)
  

    if比较运算符(<    >   <=  >=  !=  <>)

  

    if 逻辑运算符 and or if not

   

sex = input("输入你的性别:")
if  sex == "": print("你是男性,可以留胡子") elif sex == "": print("你是女性,不可以留胡子") else: print("你是中性,想干啥干啥")
if elif 
#1.获取用户的输入
num = int(input("输入一个数字(1-7):")) #2. 判断用户的数据,并且显示对应的信息 if num==1: print("Monday") elif num==2: print("Tuesday") elif num==3: print("Wednesday") elif num==4: print("Thursday") elif num==5: print("Friday") elif num==6: print("Saturday") elif num==7: print("sunday") else: print("您输入的数字有误")
判断星期几
#如果当前用户是男性的话,难么就输入判断女性的要求
sex = input("输入你的性别:") if sex == "": color = input("你白吗?") #白或者黄 money = int(input("请输入你的财产总和:")) #输入1000 beautiful = input("你美吗?") #美 或者不美 #if 白 并且 富 并且 美 #if 白 and 富 and,美: if color=="" and money>1000000 and beautiful=="": print("白富美……") print("好羡慕……") else: print("黑穷丑……") else: print("判断男性的要求在下面") color = input("你高吗?") #白或者黄 money = int(input("请输入你的财产总和:")) #输入1000 beautiful = input("你帅吗?") #美 或者不美 #if 白 并且 富 并且 美 #if 白 and 富 and,美: if color=="" and money>1000000 and beautiful=="": print("高富帅……") print("好羡慕……") else: print("矮穷矬……")
实例:白富美

 if条件总结   

if 条件:
    xxxx


if  条件:
    xxxxxx1
else: xxxxx2 if 条件1: xxxx1 elif 条件2: xxxx2 elif 条件3: xxxx3 else: …… 嵌套 if 嵌套 if xxx: print("---1----") if xxx2: xxxxxxx if xxx: xxxx3 else: xxxx if xxx: elif xxx: xxxxx2 elif xxxx: xxxx2 …… else: xxxx
View Code

三目运算符

?
1
a = A if x> 5 else B

 另一种写法

?
1
a = [A,B][x< 5 ]

while 循环 

num = 1

while num <=10:
    print(num) #print("%d"%num)
    num=num+1

while总结

复制代码
 
  
while 循环

while 条件:
    条件满足的时候执行的事情
while 嵌套

while 条件:
    条件满足的时候做的事情1
    条件满足的时候做的事情2
    。。。。
    while 条件2: 条件2 满足的时候做的事情。。。。 while 条件: 1.站起来 2.坐下 3.站起来 while 执行5次 4.转1个圈 5.坐下
复制代码

嵌套实例 

ticket = 1 #q表示有车票 0表示没有车票
knifeLenght = 48 #cm
#先判断是都有车票 if ticket==1: print("通过了车票的检测,进入到了车站,接下来要安检了") #盘DAU拿到的长度是否合法 if knifeLenght<=10: print("通过了安检,进入了候车厅") print("马上就要见到她了,好开心……") else: print("安检没有通过,等待公安处理") else: print("兄弟,你还没有买票呢,先去买票,才能进站……")
上火车
i = 1

while i<=9:
    
    j = 1
    while j<=i:
        print("%d*%d=%d\t"%(j,i,i*j),end=" ") j+=1 print("") i+=1
打印99乘法表

for循环

for iterating_var in sequence:
   statements(s)

  sequence即可迭代对象,内部实现了__iter__方法,for循环会遍历其中的每个值

例子

nums = [11,22,33,44,55]

for num in nums:
    print(num)

神奇的for_else 

简述 英文原文 A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there is no next item. 中文译文  用 break 关键字终止当前循环就不会执行当前的 else 语句,而使用 continue 关键字快速进入下一论循环,或者没有使用其他关键字,循环的正常结束后,就会触发 else 语句。
复制代码
#触发else
list = [1,2,3,4,5]
for x in list: print(x) else: print("else") list = [1,2,3,4,5] i = 0 for x in list: continue print(x) else: print("else") #不触发else: list = [1,2,3,4,5] for x in list: print(x) break else: print("else") 
复制代码
总结
for else语句可以总结成以下。 
  如果我依次做完了所有的事情(for正常结束),我就去做其他事(执行else),若做到一半就停下来不做了(中途遇到break),我就不去做其他事了(不执行else)。
  只有循环完所有次数,才会执行 else 。
  break 可以阻止 else 语句块的执行。

8.初始文件操作

打开文件:
open(文件名,访问模式)
f = open("test.txt","w")

打开文件的方式

r,以只读方式打开文件
w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
w+,打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

读取文件:f.read(),f.readline(),f.readlines()

复制代码
f = open('test.txt', 'r') content = f.read(5) print(content) print("-"*30) content = f.read() print(content) f.close()
复制代码

写入文件:f.write()

f = open('test.txt', 'w') f.write('hello world, i am here!') f.close()

关闭文件:f.close()

一些案例

#1.获取文件名
old_file_name = input("请输入要备份的文件名(需要后缀):") #2。打开这个文件("r") f_read = open(old_file_name,"r") #new_file_name = old_file_name+"[复件]" position = old_file_name.rfind(".") new_file_name = old_file_name[0:position]+"[复件]"+old_file_name[position:] #3.创建一个文件,xxx[复件].txt f_write = open(new_file_name,"w") #4.往源文件中读取内容,写入备份的文件中 #content = f_read.read() #f_write.write(content) while True: content = f_read.read(1024) if len(content)==0: break f_write.write(content) #5.关闭两个文件 f_read.close() f_write.close()
文件备份
import os

#1. 获取一个要重命名的文件夹的名字

folder_name = input("请输入要重命名的文件夹:") #2.获取文件夹中所有的文件名字  file_names = os.listdir(folder_name) ''' 第一种方法 os.chdir(folder_name) 3.对获取的名字进行重命名即可 for name in file_names: print(name) os.rename(name,"[京东出品]-"+name) ''' #第二种方法 for name in file_names: #print(name) old_file_name = "./"+folder_name+"/"+name new_file_name = "./"+folder_name+"/"+"[京东出品]"+name os.rename(old_file_name,new_file_name) print(new_file_name)
批量文件重命名

 注:驼峰命名法

englishScore = 100  #小驼峰
english_score = 100  #下划线,推荐
EnglishScore = 100   #大驼峰 englishscore = 100 #不推介

猜你喜欢

转载自www.cnblogs.com/tortoise512/p/10780236.html