# day1(python概论以及基本数据类型)

正课

1.python 创始人

吉多·范罗苏姆(Guido van Rossum)

2.编程语言类型

编译型 解释型 动态类型 静态类型 强定义类型 弱定义类型

3.python的优缺点

python语言的优点

​ ⑴作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

⑵易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。

⑶Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。

⑷可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

⑸在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

⑹Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

⑺ 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

⑻丰富的库。Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

⑼ Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。

⑽规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。

python语言的缺点

很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)

⑴运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。

⑵既是优点也是缺点,python的开源性是的Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。国随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用他。

⑶ 构架选择太多

4.python的种类

CPython

当 从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

5.第一条python语句

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

6.注释

**单行注释
一个#
#print("")
**多行注释
三单引号
‘’‘print("")’’’
三双引号

"""print("")"""

7.input()函数

作用:从外部获取值
用法:括号中可以提供提示信息

8.运行python的三种方式

解释器环境运行
python -i (运行脚本的同时也将变量加载进来可以查看具体变量)
脚本运行
IDE

9.Python中的数据类型

  • 数字(number)
    • 整形(int)
    • 浮点型(float)
    • 布尔型(bool)
    • 复数(complex)
      • 实部(cpx.real)
      • 虚部(cpx.imag)
      • 共轭复数(cpx.conjugate())
  • 字符串(String)
  • 列表(list)
  • 元组(tuple)
  • 字典(diet)
  • 集合(set)

10.变量和常量

  • 概念:
    • 程序可操作的存储区的名称
    • 程序运行时存储区中能够改变的数据
  • 规则:
    • 必须是字母,下滑线,数字组合
    • 不能以数字开头
    • 不可以是Python中的关键字
  • 1
    • 变量定义
      • val_name = 初始值
        

关键词:

 import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
  • 类型测试 type()

    type(val_name)
    
  • 内存地址 id()

    id(val_name)
    
  • 常量

    • 不变的量如 PI = 3.1415926
>>> a = 1,2,3
>>> a
(1, 2, 3)
>>> type(0a
  File "<stdin>", line 1
    type(0a
          ^
SyntaxError: invalid syntax
>>> type(a)
<class 'tuple'>
>>> x=1
>>> y=2
>>> z=x,y
>>> type(z)
<class 'tuple'>
>>>

互换两元素值

>>> x,y=y,x
>>> x
2
>>> y
1
>>>

11.常见的数学函数

函数函数用途
abs()绝对值
pow(x,y)x的y次幂
round(x,[n])四舍五入到x的n位有效数字
math.exp(1)返回e的x次幂
math.fabs()返回浮点数类型的绝对值
math.ceil(x)将x向上取整
math.floor(x)将x向下取整
math.log(x,[y])单参数求以e为底x的对数,双参数求以y为底x的对数
math.modf(x)返回浮点数的小数部分和整数部分
math.sprt(s)求s的平方根

math包中的常见函数

 dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
>>>

12.表达式与运算符

  • 表达式
    • 由变量,常量和运算符组成的式子,成为表达式
  • 运算符
    • 算数运算符
    • 比较运算符
    • 逻辑运算符
    • 赋值运算符
    • 成员运算符
    • 身份运算符
    • 位运算符
运算符描述实例
+相加a+b
-相减a-b
*相乘a*b
/相除a/b
**幂运算a的b次幂
%取余a%b
//整除求商a//b
+=相加后赋值a+=3
-=相减后赋值a-=3
&按位 与 同为1为1否则为0101&001
|按位或 有1就为12 |3
^按位异或 不同为1相同为02^3
~按位取反~3
<<左移运算2<<2
>>右移运算16>>2
in若存在于指定序列中则返回truea in b
not in若不存在于指定序列中则返回truea not in b
is判断两个标识符是不是引用自同一个对象a is b
not is判断两个标识符是不是引用自同一个对象a not is b
  • 拓展
    • divmod(x,y) 返回:x除以y的商和余数
a=divmod(28, 4)
print(a)

13.数据类型的转换

强转类型描述
int(x,[base])将x强制转化为整形。如果是字符串,需要制定base基数
float(x)将x转换为浮点型
str(x)强转为字符串
repr()将对象转化为表达式字符串
list()转化为列表
tuple转化为元组
dict()转化为字典
set()转化为集合
chr()根据字符表吧整数转化为字符
ord()把字符转化为数值
bin()转化为二进制
oct()转化为八进制
hex()转化为十六进制

14.随机函数

导入这个模块

import random

random模块的常见功能

1.random.random()

  • 用来生成一个0-1的随机浮点数

    import random
    
    for i in range(100):
        a=random.random()
        print(a)
    

2.random.uniform(a,b)

  • 用来生成a到b之间的随机浮点数

    import random
    
    for i in range(100):
        a=random.uniform(1,3)
        print(a)
    

3.random.randint(a,b)

  • 用来生成a到b的随机整数

    import random
    
    for i in range(100):
        a=random.randint(1,3)
        print(a)
    

4.random.randrange([start],stop,[step])

  • start默认为1 step为步长默认为1,取递增数列中的随机一个

    import random
    
    for i in range(100):
        a=random.randrange(1,16,2)
        print(a)
    

5.random.choice(sequence)

  • 从序列中随机获取一个元素,sequsence可以为列表,字符串或者元组

    import random
    
    li=["123",["asd"],["adsas"],["fgh"],["1234cds"]]
    for i in range(100):
        a=random.choice(li)
        print(a)
    

6.random.shuffle(x[,random])

  • 用来将一个列表的元素打乱。即将列表的元素随机排列

    import random
    
    li=["123",["asd"],["adsas"],["fgh"],["1234cds"]]
    for i in range(6):
        random.shuffle(li)
        print(li)
    

7.random.sample(sequence,k)

  • 用来从指定序列中随机获取指定长度的片段并随机排列。但,不会修改原来的序列。

    import random
    
    li=["123",["asd"],["adsas"],["fgh"],["1234cds"]]
    for i in range(6):
        a=random.sample(li,3)
        print(a)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值