Python基础(上)
前言
正式开始Python之旅,主要学习内容专注在爬虫和人工智能领域,如Web开发之类将跳过不研究。
Python的意思是蟒蛇,源于作者Guido van Rossum(龟叔)喜欢的一部电视剧。所以现在开始暂时忘掉.NET忘掉C#,using干什么用的?不知道....
我只记得、我要玩蛇!!!
Python基础概述
1.优点
简单:Python是一种代表简单主义的语言。Python这种伪代码本质是它最大的优点之一,它使你能够专注于解决问题而不是搞明白语言本身。
易学:Python极易上手,它有着极其简单的语法,Python采用强制缩进的方式使得代码具有极佳的可读性。
免费、开源:Python是FLOS(自由/开放源码软件)之一。可以自由地发布这个软件的拷贝、阅读它的源码、并改动它和闭源。
高层语言:无需关心内存方面的管理之类的底层细节。
跨平台(可移植性):Python已经被移植在多个平台,在任何平台都可以在不修改源码的情况下运行Python程序。
解释性:Python程序不需要编译成二进制码,可以直接源代码运行程序,在计算机内部,Python解释器把源代码转换成字节码的中间形式,再把它翻译成计算机使用的机器语言运行。
面向对象:Python既支持面向过程编程也支持面向对象编程,相比其它语言如Java和C#相比,它以一种非常强大又简单的方式实现面向对象编程。
可扩展性:如果需要关键代码运行得更快或希望某些算法不公开,可以把这一部分使用C或C++编写,然后在Python程序中使用它们。
丰富的库:Python标准库很庞大。
2.缺点
运行速度:如果对运行速度有要求的话,用C++改写关键部分。
中文资源匮乏:入门资料多,高级内容还得看英文版。
架构选择太多:没有像C#这样的官方.NET企业架构,
3.应用场景
Web应用开发:一些Web框架,如Django,TurboGears,web2py,Zope等,可以让程序员轻松地开发和管理复杂Web程序。
操作系统管理、服务器运维和自动化脚本:在很多操作系统里,Python是标准的系统组件。大多数Linux发行版和MacOS都集成了Python,可以在终端直接运行Python。Python能够访问Windows的COM服务及其它Windows API。使用IroPython,Python程序可以直接调用.Net Frameword。
科学计算:NumPy、SciPy、Matplotlib、Pandas等,可以让Python程序员编写科学计算程序。
桌面软件:PyQt,PySide,wxPython,PyGTK可以使用Python快速开发桌面应用程序。
服务器软件:Python对于各种网络协议的支持非常完美,因此常被用于编写服务器软件、网络爬虫、第三方库Twisted支持异步网络编程和多数标准的网络协议,并且提供了多种工具,被广泛用于编写高性能的服务器软件。
游戏:很多游戏使用C++编写图形显示等高性能模块,使用Python编写游戏的逻辑、服务器。
注释
1.单行注释
以#开头、#右边的所有内容当作说明而非真正要执行的内容。
#我是单号注释
print('Hello Jonins')
2.多行注释
以'''(3个单引号)开始以'''(3个单引号)结尾,中间的内容被当作说明。(也可以用3个双引号""")
'''
我是多行注释
'''
"""
我是多行注释
"""
print('Hello Jonins')
中文支持
Python3支持中文,但在Python2中,程序只要包含中文,python2的解释器不能识别所以会报错,所以需要在程序的最开头输入如下代码:
#conding=utf-8
还有一种写法,是python的语法规范中推荐使用的:
#-*- conding:utf-8 -*-
完整的示例如下:
变量及类型
1.变量定义
python是一门弱类型语言,意味着不用强调变量的类型,在变量的定义前面不需要加变量的类型。
num1 = 10#num1在变量赋值的过程中自动赋值自己的类型
num2 = 20
total = num1+num2
print(total)
若想查看变量的类型,可以使用type(变量名):
num1 = 10
num1 = ''
print(type(num1))
2.变量类型
为了更充分的利用内存空间以及更高效的管理内存,变量有不同类型的,常用的数据类型如下:
标识符和关键字
标识符是我们自己定义的如:变量名、函数名等。
标识符只能由数字、字母和下划线组成,并且数字不能在开头。
关键词是python已经使用了的,具有特殊功能的标识符。python不允许开发者自己定义和关键词相同名字的标识符。可以通过代码查看python具有哪些关键词:
import keyword
keys = keyword.kwlist;
print(keys)
大致有如下这些:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
输入(input)
1.Python2中输入
在python2中,获取键盘输入的数据的方式采用raw-input()函数,示例如下:
name=raw_input("请输入姓名:")
print(name)
说明:
raw-input()的小括号中放入的是,提示信息,用来在获取数据之前给用户一个提示。
raw-input()在从键盘获取到数据以后,会将数据存放到等号右边的变量中。
raw-input()会把用户输入的任何值都作为字符串来存储。
而python2中的input()函数于raw_input()类似,但其接受的输入必须是表达式(切换python2的交互窗口进行验证)如下所示:
>>> num=input()
123#输入123自动识别为int >>> num
123
>>> type(num)
<type 'int'>
>>> str=input()
'jonins'#输入"或'自动识别为string >>> str
'jonins'
>>> type(str)
<type 'str'>
>>> num=input()
1+2+3#同类型可以相加 >>> num
6
>>> str=input()
''+'jonsin'#string同类型则会拼接 >>> str
'1010jonsin'
>>>
2.Python3中输入
在python3中没有raw_input()函数,只有input(),并且python3中的input()功能与python2中的raw_inpu()功能一样。
输出(print)
1.普通输出
print('hello jonins')
age=18
print(age)
2.格式化输出
在程序中若想在输出中给变量占位需要使用%号格式化输出,如下所示
age=18
print('年龄是:%d已成年!'%age)
name='jonins'
print('姓名%s,年龄%d岁.'%(name,age))
在程序,看到%这样的操作符,就是python的格式化输出。
3.常用的格式符号
下面是完整的,可以与%符号配合使用的列表:
格式符号 | 转换 |
%c | 字符 |
%s | 通过str()字符串转换来的格式化 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写e) |
%E | 索引符号(大写E) |
%f | 浮点实数 |
%g | %f和%e的简写 |
%G | %f和%E的简写 |
4.换行输出
在输出的时候,如果有\n那么,此时\n后的内容会在另外一行显示
print('姓名jonins\n年龄18岁')
运算符
1.算术运算符
注意:当算术的运算两个对象不是同类型,也是可以计算的,结果会跟随类型较大的对象。如:9/3.0 =3.0
2.赋值运算符
运算符=,为赋值运算符,作用是把等号右边的结果给左边的变量,示例如下:
a,b=1,3
print(a+b)
c,d=2.0,'jonins'
print(c)
print(d)
3.复合赋值运算符
运算符 | 描述 | 示例 |
+= | 加法赋值 | a+=b等效于a=a+b |
-= | 减法赋值 | a-=b等效于a=a-b |
*= | 乘法赋值 | a*=b等效于a=a*b |
/= | 除法赋值 | a/=b等效于a=a/b |
//= | 取整除赋值 | a//=b等效于a=a//b |
%= | 取余赋值 | a%=b等效于a=a%b |
**= | 幂计算赋值 | a**=b等效于a=a**b |
数据类型转换
示例
str=''
num=float(str)
print(num)
判断语句(if&elif)
1.if-else语句
if-else的使用格式:
if 条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
满足条件时要做的事情4
...(省略)...
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
不满足条件时要做的事情4
...(省略)...
示例如下:
age=18
print('--------if判断开始----------')
if age>=18:
print('已成年')
print('年龄是%i'%age)
else:
print('未成年')
print('年龄是%i'%age)
print('--------if判断结束----------')
注意:代码的缩进为一个tab键,或者4个空格。解释器会将缩进的语句判定为满足条件时执行的代码。对应的C#代码如下所示:
int age = ;
Console.WriteLine("--------if判断开始----------");
if (age >= )
{
Console.WriteLine("已成年");
Console.WriteLine($"年龄是{age}");
}
else
{
Console.WriteLine("未成年");
Console.WriteLine($"年龄是{age}");
}
Console.WriteLine("--------if判断结束----------");
Console.ReadKey();
C# Code
2.elif语句
elif的使用格式如下:
if 条件1:
满足条件1时要做的事情1
满足条件1时要做的事情2
满足条件1时要做的事情3
满足条件1时要做的事情4
...(省略)...
elif 条件2:
满足条件2时要做的事情1
满足条件2时要做的事情2
满足条件2时要做的事情3
满足条件2时要做的事情4
...(省略)...
else:
不满足上述所有条件时要做的事情1
不满足上述所有条件时要做的事情2
不满足上述所有条件时要做的事情3
不满足上述所有条件时要做的事情4
...(省略)...
示例如下:
age=18
print('--------if判断开始----------')
if age==16:
print('已年满16岁')
elif age==18:
print('已成年')
print('年龄是%i'%age)
else:
print('未成年')
print('年龄是%i'%age)
print('--------if判断结束----------')
elif语句一定要配合if使用,可以有else也可以没有,elif的条件不限制,对应的C#代码如下所示:
int age = ;
Console.WriteLine("--------if判断开始----------"); if (age == )
Console.WriteLine("已年满16岁");
else if (age == )
{
Console.WriteLine("已成年");
Console.WriteLine($"年龄是{age}");
}
else
{
Console.WriteLine("未成年");
Console.WriteLine($"年龄是{age}");
}
Console.WriteLine("--------if判断结束----------");
Console.ReadKey();
C# Code
3.if嵌套
if嵌套的格式大致如下:
if 条件1:
满足条件1时要做的事情1
满足条件1时要做的事情2
...(省略)...
if 条件2:
满足条件2时要做的事情1
满足条件2时要做的事情2
满足条件2时要做的事情3
满足条件2时要做的事情4
..(省略)...
注意:
外层的if判断,也可以是if-else
内层的If判断,也可以是if-else
比较&关系运算符
1.比较运算符
2.逻辑运算符
循环语句(while)
1.while语句
while循环的格式如下:
while 条件:
满足条件时,做事情1
满足条件时,做事情2
满足条件时,做事情3
...(省略)...
示例如下:
i=1
sum=0
while i<=100:
sum+=i
i+=1
print("1-100的累积和为:%i"%sum)
2.循环嵌套
while 条件:
满足条件时,做事情1
满足条件时,做事情2
满足条件时,做事情3
...(省略)...
while 条件:
满足条件时,做事情1
满足条件时,做事情2
满足条件时,做事情3
...(省略)...
示例如下:
i=1
while i<=5:
j=1
while j<=i:
print("* ",end=" ")
j+=1
print("\n")
i+=1
循环语句(for)
在python中for循环可以遍历任何序列的项目,如一个列表或者一个字符串
for 临时变量 in 列表或者字符串等:
满足循环条件时执行的代码
else:
满足不循环条件时执行的代码
示例如下:
name='jonins'
for x in name:
print(x)
else:
print('遍历完成')
break&continue
break的作用:用来结束整个循环。
continue的作用:用来结束本次循环,紧接着执行下一次的循环。
示例如下:
name='jonins.com'
for x in name:
if(x=='o'):
continue;
if(x=='.'):
break;
print(x)
注意:
break/continue只能用在循环中,除此以外不能单独使用。
break/continue在嵌套循环中,只对最近的一层循环起作用。
Python基础(上)的更多相关文章
- windows在python基础上安装pip
首先你必须已经安装了python,并且配置好环境 键入pip 复制https://bootstrap.pypa.io/get-pip.py的内容并创建get-pip.py文件(该文件的内容就是刚刚复制 ...
- Python基础 (上)
参考:菜鸟教程 Python用途 目录 一.数据类型 二.运算符 三.条件和循环控制语句 四.函数 五.模块 六.输入与输出 一.数据类型 string.list和tuple都属于sequenc ...
- Python基础教程2上的一处打印缺陷导致的代码不完整#1
#1对代码的完善的 出现打印代码处缺陷截图: 图片上可以看到,定义的request根本没有定义它就有了.这个是未定义的,会报错的,这本书印刷问题,这个就是个坑,我也是才发现.花了点时间脱坑. 现在发完 ...
- 《转》python学习--基础上
学习的python本来想自己总结,但是发现了一篇不错的大牛的博客,拿来主义,,又被我实践了 关于前两篇如果总结的不详细,因此把他人的转载过来 http://www.cnblogs.com/BeginM ...
- Python 时间推进器-->在当前时间的基础上推前n天 | CST时间转化标准日期格式
由于公司任务紧迫,好久没有在园子里写自己的心得了,今天偷个闲发表点简单的代码块,在开源的时代贡献微薄力量.话不多说,直接上代码块: ]) m = ]) d = ]) the_date = dateti ...
- python基础--14大内置模块(上)
python的内置模块(重点掌握以下模块) 什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类 ...
- 《Python编程第4版 上》高清PDF|百度网盘免费下载|Python基础编程
<Python编程第4版 上>高清PDF|百度网盘免费下载|Python基础编程 提取码:8qbi 当掌握Python的基础知识后,你要如何使用Python?Python编程(第四版)为 ...
- python基础===基于requests模块上的协程【trip】
今天看博客get了一个有趣的模块,叫做 trip #(pip install trip) 兼容2.7版本 基于两大依赖包:TRIP: Tornado & Requests In Pa ...
- python实现决策树C4.5算法(在ID3基础上改进)
一.概论 C4.5主要是在ID3的基础上改进,ID3选择(属性)树节点是选择信息增益值最大的属性作为节点.而C4.5引入了新概念"信息增益率",C4.5是选择信息增益率最大的属性作 ...
随机推荐
- (其他)SQL注入(转)
转自维基百科: SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,在这种应用程序中,恶意的SQL语句被插入输入字段中执行(例如将数据库内容转储给攻击者).[1] SQL注入必须利用应用程序软件 ...
- 【Python】keras使用Lenet5识别mnist
原始论文中的网络结构如下图: keras生成的网络结构如下图: 代码如下: import numpy as np from keras.preprocessing import image from ...
- mybatis学习系列--逆向工程简单使用及mybatis原理
2逆向工程简单测试(68-70) SqlSessionFactory sqlSessionFactory=getSqlSessionFactory(); SqlSession session = sq ...
- 使用wxpy自动发送微信消息
思路整理:1.进入心灵鸡汤网页,使用python获取心灵鸡汤内容 2.登陆微信,找到需要发送的朋友 3.发送获取的内容 1.获取心灵鸡汤的内容 如下图,获取第一条鸡汤 实现如下: 2.登陆微信,搜索朋 ...
- oracle中如何只查询一条复合条件的记录,即查到一条记录就返回(转)
可以用rownum来查询一条记录. 如emp表中有如下数据. 要求查询deptno为20的,但只取一条记录,可用如下语句: select * from emp where deptno=20 and ...
- Android中长度单位和边距
Android表示单位长度的方式通常有三种表示方式. 距离单位☞px:表示屏幕实际的象素.例如,320*480的屏幕在横向有320个象素,在纵向有480个象素 距离单位☞dp:dp = dpi ...
- C#的static
1.static意思是静态,可以修饰类.字段.属性.方法2.标记为static的就不用创建实例对象调用了,可以通过类名直接点出来3.static三种用法:4.用于变量前,表示每次重新使用该变量所在方法 ...
- DataX的使用
简介 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.HDFS.Hive.OceanBase.HBase.OTS.ODPS 等各种异构数据源之间高效 ...
- 2017-2018-2 20155314《网络对抗技术》Exp6 信息搜集与漏洞扫描
2017-2018-2 20155314<网络对抗技术>Exp6 信息搜集与漏洞扫描 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 信息搜集 1.1 外围信息搜 ...
- nginx反向代理与Real-IP和X-Forwarded-For.txt
本文作者张开涛.为保障<亿级流量网站架构核心技术>一书内容的连续性,有些需要读者了解的内容,或者书的补充和引申内容,会通过二维码嵌入的方式引导读者阅读学习.大家可以关注作者公众号“开涛的博 ...