1、数字和表达式

什么是表达式,1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1、2、3叫做操作数。1+2*3 经过计算后得到的结果是7,就1+2*3 = 7。我们可以将计算结果保存在一个变量里,ret = 1-2*3 。 所以表达式就是由操作数和运算符组成的一句代码或语句,表达式可以求值,可以放在“=”的右边,用来给变量赋值。

计算运算符号:+、-、*、/、%、**

赋值运算符: = 、+= -= *= /= %= //= **=

比较运算符:>、 <、 >=、 <=、 ==、!=

逻辑运算符: not 、and、 or

逻辑运算符是用来做逻辑计算的。像我们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的得到一个为True或False的值。而逻辑运算符的的操作数就是一个用来做条件判断的表达式或者变量。

成员运算符: not in 、in (判断某个单词里是不是有某个字母)

成员运算符用来判断一个元素是否是另一个元素的成员。 比如说我们可以判断 “hello” 中是否有 “h”, 得到的结果也是True 或者 False。

身份运算符: is、is not

这里我们首先将123456赋值给a,后有将a赋值给b, 这样其实是 a和b 的值都是123456, 但是后面d的值也是123456,为什么 第一次a is b 的结果为True ,d和 a 的结果为False 呢?

原因是这样的: 我们知道程序是运行在内存里的,第一次 我们将123456赋值给a的时候,其实是在内存里开辟了一块空间,将123456放在这块空间里,为了找到这里的123456, 会有一个指向这块空间的地址,这个地址叫做内存地址,是123456存储在内存中的地址。a其实指向的就是存储123456的内存空间的地址。执行了b=a,就是让b指向的地址和a一样。之后我们执行了 d = 123456 ,这里就会再开辟一块内存空间,并将指向该空间的内存地址赋值给d ,这样的话 ,a和b 指向的是同一个123456, d 指向的是另外一个123456 。

位运算符:

先了解一个概念:

我们平时用到的数字在计算机中是以二进制表示的,  这个二进制数叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.

比如:十进制中的数 +7 ,计算机字长为8位,转换成二进制就是00000111。如果是 -7 ,就是 10000111 。那么,这里的 00000111 和 10000111 就是机器数。

  原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

  [+1] = 0000 0001

  [-1] = 1000 0001

  第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
  11111111 到 01111111 即 -127 到 127

  反码的表示方法是:
  正数的反码是其本身
  负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

  [+1] = [00000001] = [00000001]

  [-1] = [10000001] = [11111110]

  补码的表示方法是:
  正数的补码就是其本身
  负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

  [+1] = [00000001] = [00000001] = [00000001]

  [-1] = [10000001] = [11111110] = [11111111]

我们设置a=234 (二进制为 11101010), b=44 (二进制为 101100)

& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

^ 按位异或运算符:当两对应的二进位相异时,结果为1

~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

   a = 10000000 = 128

    ~a

     result: 01111111 = 127

<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

    a = 10110011 = 179

    a << 2

result:  1011001100

>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

    a = 10110011 = 179

    a >> 2

result:  00101100  = 44

位运算符一般用于二进制操作,一般用于底层,我们很少用,知道就可以了。

2、八进制和十六进制

    在Python中,十六进制数应该像下面这样书写:

八进制数应该这样书写:

 3、变量

      变量(variable)是另外一个需要熟知的概念。Python中的变量很好理解。变量基本上就是代表(或者引用)某值得名字。举例来说,如果希望用名字x代表5,只需要执行下面的语句即可:

这样的操作称为赋值(assignment),数值5被赋给了变量x。另外一个说法就是:将变量x绑定到了值(或者对象)5上面。在变量被赋值之后,就可以在表达式中使用变量。

变量的命名规则:

变量名只能是 字母、数字或下划线的任意组合;

变量名的第一个字符不能是数字;

变量是区分大小写的;

约定俗成的一些规则,变量名称应该有意义、不要用中文做变量名、不要使用拼音;

关键字不能声明为变量名。

4、注释

程序很长的时候,不弄明白代码就不知道代码是什么的,这个时候怎么办?

我们看书的时候,有不懂的地方,我们一般都会标注一下。
     我们写程序也一样,我在代码旁边标注一下是不是就很方便了。

注释有两种方式:

单行注释 # 
     多行注释 """ 内容"""

作用:
     避免自己忘了写的代码是做什么的;
     写给人看的;
     不要去注释你代码做了什么,而要去 注释 我的代码为什要这么做。

Linux/Unix用户需要注意的内容:

特殊的注释:

在某些Python文件中我们会看到文件的第一行是

#!/usr/bin/env python

这一行是一个特殊的注释,他有特殊的作用,被称为Shebang,一般在linux/Unix中出现。

Shebang是一个由 “#”  和 “!” 构成的字符串行(#!),她出现在文件的第一行。当文件中出现Shebang 时,Linux/Unix 操作系统的的程序载入器会分析Shebang的内容,将之后的内容作为解释器命令,并调用该执行,将载有Shebang的文件路径作为解释器的参数。

在这里 #! 先用于帮助内核找到Python解释器,但是在导入模块的时候将会被忽略,因此,只有在直接执行的文件才有必要加入#! 。

5、字符编码

      python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)。ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

关于中文

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

6、获取用户输入

在编写程序的时候,并不需要知道变量的具体指。当然,解释器最终还是得知道变量的值。可是,它怎么能知道这个值呢?解释器只知道我们告诉它的内容。

事实上,我们通过编写程序让别人用,我们无法预测用户会给程序提供什么值。那么,看看非常有用的input函数吧。

     7、Python类型转换

       函数                                              描述
    int(x [,base ])                             将x转换为一个整数
    long(x [,base ])                          将x转换为一个长整数
    float(x )                                    将x转换到一个浮点数
    complex(real [,imag ])                 创建一个复数
    str(x )                                       将对象 x 转换为字符串
    repr(x )                                     将对象 x 转换为表达式字符串
    eval(str )                                   用来计算在字符串中的有效Python表达式,并返回一个对象
    tuple(s )                                    将序列 s 转换为一个元组
    list(s )                                      将序列 s 转换为一个列表
    chr(x )                                     将一个整数转换为一个字符
    unichr(x )                                将一个整数转换为Unicode字符
    ord(x )                                    将一个字符转换为它的整数值
    hex(x )                                   将一个整数转换为一个十六进制字符串
    oct(x )                                    将一个整数转换为一个八进制字符串

例如:如果要将2个输入的变量相乘,必须进行类型转换。

  8、流程控制之if语句

    

我们知道了如何获取用户输入,现在要写一个猜数字的游戏,我们想一下,首先我们的程序运行起来,然后让用户输入数字,之后程序判断用户输入的数字是否正确,并返回判断结果。

这里就需要用到if语句来进行判断。if语句的结构是:

if 判断条件:
执行语句…… var = input("Enter:")
if var == "A":
print("True")

注意:

缩进——推荐四个空格 (使用2个、3个空格或者tab都是可以得)

不要tab与空格混用
不同软件对空格的显示逻辑总是一样的,但是对于tab却五花八门。
有的软件把Tab展开成空格,有的不会展开。有的Tab宽度是4,有的宽度是8,
这些不一致会使得代码混乱,尤其是靠缩进表示块结构的Python。

我们继续编写我们的猜数字游戏。

前面我们写的猜数字游戏,只有在用户输入正确的时候,才会有提示,那输入错误的时候,是不是也应该提示?

这里就需要用到if-else语句

if语句
if 判断条件:
执行语句……
else:
执行语句……

if 语句的流程图

if语句共有三种结构

9、流程控制之while循环           

现在有一个需求,要求从1到10,打印10个数字,可以用以下方法实现:

Python要实现循环功能,代码就是按照上述的方法来写。

嵌套循环

如果我想实现这个功能,在控制台上打印10行数字,每行有5列,分别是1,2,3,4,5,该如何实现呢?

实现代码如下:

输出结果如下:

break语句

我们换个需要,上述打印10行5列数字中,我想在打印第3行数字后,就退出循环,该如果实现呢?

实现代码如下:

输出结果如下:

这里要使用break语句,break语句会终端当前循环。

continue语句

现在,在10行5列的数字矩阵里,我只想打印1,2,3,5列,该如何实现呢?

输出结果如下:

这里要使用continue语句,continue语句的作用是退出当前循环,继续执行下次循环。


快速认识Python的更多相关文章

  1. java程序员快速掌握python系列——概述

    这一系列主要是总结学习python过程中的方方面面(已经学完,时间大概是一周左右).当然限于个人水平java也就是够用,python短时间内也不可能深入到哪里去.所以这次的分享的目的是能够快速使用py ...

  2. 快速查询Python脚本语法

    /********************************************************************* * 快速查询Python脚本语法 * 说明: * Char ...

  3. 程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  4. 程序员带你十天快速入门Python,玩转电脑软件开发(三)

    声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群5 ...

  5. 程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  6. 程序员带你十天快速入门Python,玩转电脑软件开发(一)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  7. 新手如何快速入门Python

    学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如 ...

  8. 快速开始Python/WSGI应用程序

    快速开始Python-wsig应用程序 官方参考文档 安装 uwsgi 安装 pip install uwsgi uwsgi --version # 查看 uwsgi 版本 测试 uwsgi 是否正常 ...

  9. python从入门到精通之30天快速学python视频教程

    点击了解更多Python课程>>> python从入门到精通之30天快速学python视频教程 课程目录: python入门教程-1-Python编程语言历史及特性.mkv pyth ...

  10. 零基础快速掌握Python系统管理视频课程【猎豹网校】

    点击了解更多Python课程>>> 零基础快速掌握Python系统管理视频课程[猎豹网校] 课程目录 01.第01章 Python简介.mp4 02.第02章 IPython基础.m ...

随机推荐

  1. jenkins的maven插件

    如图所示的maven项目也是一个jenkins插件:https://github.com/jenkinsci/maven-plugin 可以在插件管理里面安装:

  2. 一个websocket的demo(php server)

    notice: 通过命令行执行php文件  如 php -q c:\path\server.php 通过本地web服务器访问 http://127.0.0.1/websocket/index.php即 ...

  3. 做了一个非竞价排名、有较详细信息的程序员职位 match 网站

    作为一个程序员,每次看机会当我去 BOSS 直聘 或者拉勾网进行搜索时,返回的顺序并不是根据匹配程度,而是这些公司给 BOSS 直聘或者拉勾网付了多少钱.这种百度式的竞价排名机制并没有把我做为求职者的 ...

  4. JAVA数据结构和算法 1-综述:数据结构和数据类型

    数据结构:指数据在计算机内存空间中或者磁盘中的组织形式. 对于数据结构的操作:插入.删除.查找.迭代遍历.排序等: Java.util包中含有诸如向量(一个可扩充的数组).栈.哈希表等类型的数据结构, ...

  5. OneNote2016代码高亮插件的安装与使用

    OneNote2016代码高亮插件的安装与使用 使用效果 我觉得CSDN和博客园上面的许多讲解都不是很清晰,最后还是我自己弄好的.这里分享一下: 第一步要确认自己OneNote的版本是32位的还是64 ...

  6. CenOS 7 防火墙 端口 systemctl 操作项

    Centos开放端口 # firewall-cmd --zone=public --add-port=3306/tcp --permanent Centos关闭端口 # firewall-cmd -- ...

  7. zabbix 部署包安装

      关于zabbix的安装方式,官网提供了几种方法,分别是:部署包安装.源码安装.容器安装.容器安装我之前已经写过一篇,而现在这一篇是关于部署包安装的.   按照官网的说法,我们需要如下几个步骤:   ...

  8. [转帖]Oracle数据库lob大对象数据类型字段总结,值得收藏

    Oracle数据库lob大对象数据类型字段总结,值得收藏 原创 波波说运维 2019-07-11 00:02:00 https://www.toutiao.com/i67108943269703357 ...

  9. JSON、GSON

    文章目录 什么是JSON 特点 JSON的数据结构 -- Object JSON的数据结构 -- Array JSON的数据结构 -- 基本类型 构建 JSON 数据 解析 JSON 数据 GSON ...

  10. java虚拟机栈(关于java虚拟机内存的那些事)

    <深入理解 java 虚拟机> 读书扩展 作者:淮左白衣 写于 2018年4月13日16:26:51 目录 文章目录 java虚拟机栈是什么 特点 栈帧 局部变量表 什么时候抛出 `Sta ...