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

文章目录

  • 正课
    • 1.python 创始人
    • 2.编程语言类型
    • 3.python的优缺点
      • python语言的优点
      • python语言的缺点
    • 4.python的种类
    • 5.第一条python语句
    • 6.注释
    • 7.input()函数
    • 8.运行python的三种方式
    • 9.Python中的数据类型
    • 10.变量和常量
    • 11.常见的数学函数
    • 12.表达式与运算符
    • 13.数据类型的转换
    • 14.随机函数

正课

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 "", 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否则为0 101&001
| 按位或 有1就为1 2 |3
^ 按位异或 不同为1相同为0 2^3
~ 按位取反 ~3
<< 左移运算 2<<2
>> 右移运算 16>>2
in 若存在于指定序列中则返回true a in b
not in 若不存在于指定序列中则返回true a 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)
    

你可能感兴趣的:(pythen学习)