前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python编程导论】第二章-Python简介

【Python编程导论】第二章-Python简介

作者头像
Datawhale
发布2019-07-08 10:52:27
7470
发布2019-07-08 10:52:27
举报
文章被收录于专栏:Datawhale专栏Datawhale专栏

基本概念

1. 编程语言的分类

低级编程与高级编程:二者之间的区别是,编写程序时,我们是使用机器层次的指令和数据对象(底层操作),还是使用语言设计者提供的更为抽象的操作(图形用户界面,UI)。

通用性与专注于某一应用领域:指编程语言中的基本操作是广泛适用的还是只针对某个领域,例如SQL。

解释运行与编译运行:指程序员编写的指令序列,即源代码是直接执行(通过解释器,使用解释型语言编写的程序更易调试,因为解释器可以给出与源代码相关的错误信息。),还是要先转换成机器层次的基础操作序列。(通过编译器,编译型语言(如,java)编写的程序速度更快,占用的空间也更少。)

2. Python 基本元素

python中对象:对象分为标量对象(不可再分)和非标量对象(有内部结构,可再分)。Python有以下4类标量对象:

  1. int:表示整数。
  2. float:表示实数。
  3. bool:表示布尔值True和False。
  4. None:这个类型只有一个值。

操作符:对象和操作符可以组成表达式,每个表达式都相当于某种类型的对象,我们称其为表达式的值。

int类型和float类型支持的操作符

  1. i + j:i和j的和。
  2. i - j:表示i减j。
  3. i * j:i和j的积。
  4. i // j:表示整数除法。只返回商,不返回余数。
  5. i / j:表示i除以j。
  6. i % j:表示int i除以int j的余数。通常读作i mod j,是i modulo j的缩写。
  7. i ** j:表示i的j次方。如果i和j都是int类型,结果也是int类型。

:如果i和j都是int类型,结果也是int类型。如果其中任意一个是float类型,那么结果就是float类型。

比较运算符:包括:==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)和<=(小于等于)。

bool类型上的基本操作符:and、or和not

  1. a and b:当a和b都为True时,值为True,否则为False。
  2. a or b:当a和b至少有一个为True时,值为True,否则为False。
  3. not a:如果a为False,值为True;如果a为True,值为False。

变量:在Python中,变量仅是名称,没有其他意义。赋值语句将=左边的名称与=右边的表达式所表示的对象关联起来,一个对象可以有一个或多个名称与之关联,也可以不关联任何名称。

多重赋值:Python支持多重赋值。如:x, y = 2, 3

变量名:将程序写得清晰易懂极其重要,恰当地选择变量名称在增强程序可读性方面扮演了重要角色。

  1. 在Python中,变量名可以包含大写字母、小写字母、数字(但不能以数字开头)和特殊字符_。
  2. Python变量名是大小写敏感的,如Julie和julie就是不同的变量名。最后,Python中还有少量的保留字(有时称为关键字),它们有专门的意义,不能用作变量名。
  3. Python 3中的保留字包括and、as、assert、break、class、continue、def、del、elif、else、except、False、finally、for、from、global、if、import、in、is、lambda、nonlocal、None、not、or、pass、raise、return、True、try、while、with和 yield。

3. 程序分支

最简单的分支型程序是条件语句

程序运行时间:

  1. 假定每行代码都需要以单位时间运行,那么有n行代码的直线型程序就需要n个单位时间。那么有n行代码的分支型程序呢?它运行的时间可能会少于n个单位时间,但绝不会超过n个单位时间,因为每行代码至多运行一次。
  2. 如果一个程序运行的最长时间是由程序长度决定的,那么可以称为以常数时间运行。这并不意味着它每次运行都执行相同的步骤,而意味着存在一个常数k,使得这个程序肯定会在k个步骤之内结束运行。其中隐含的意义是,这种程序的运行时间并不随着程序输入量的增加而增加。

4. 字符串和输入

str类型的对象:用来表示由字符组成的字符串。str类型的字面量可以用单引号或双引号表示,如'abc'或"abc"。

重载:即根据应用其上的对象类型的不同,它的意义也不同。操作符+存在重载的情形,例如:

  1. 应用于两个数值对象时,它表示相加;
  2. 应用于两个字符串时,它表示连接。

字符串:是Python中的序列类型之一。所有序列类型都可以执行以下操作:

  1. 可以使用len函数求出字符串的长度。例如,len('abc')的值是3。
  2. 可以使用索引从字符串提取单个字符。例如,在解释器中输入'abc'[0]会显示字符串'a'。
  3. 可以使用切片操作从字符串提取任意长度的子串。如果s是个字符串,那么表达式s[start:end]就表示s中从索引start开始至索引end-1结束的子串。例如,'abc'[1:3] ='bc' 。 :为什么在索引end-1 处而不是在end 处结束呢? 这样做是为了让'abc'[0:len('abc')]这样的表达式具有我们希望的值。如果冒号前面的索引值省略,那么默认值为0;如果冒号后面的索引值省略,那么默认值就是字符串的长度。于是,表达式'abc'[:]在语义上就等同于更加冗长的'abc'[0:len('abc')]。

input函数:可以直接接受用户输入。它可以使用一个字符串作为参数,显示在shell中作为提示信息,然后等待用户输入,用户输入以回车键结束。用户输入的行信息被看作一个字符串,并成为这个函数的返回值。

代码语言:javascript
复制
name = input('Enter your name: ')

字符串进行类型转换:只要字符串中的值是某种类型的有效字面量,就可以对字符串进行类型转换。

  1. 例如,int('3') * 4的值是12。
  2. 当一个float值被转换成int值时,数值是被截断的(不是四舍五入)。 例如,int(3.9)的值是int 3。

Unicode编码的由来

字符串存在编码问题。

  1. 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)(2的8次幂等于256,即8个位置每个位置可以选择0或者1,总共有256种可能,从0开始就到了255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
  2. 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
  3. 类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
  4. Unicode通常用两个字节表示一个字符(这时候就有2的16次幂种可能),原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

UnicodeDecodeError处理: 如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。 可以在第一行添加注释:

代码语言:javascript
复制
# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。

5. 迭代

需要程序多次做同一件事情的时候,可以使用迭代语句,最简单的迭代语句就是for循环

编程练习

1.实际练习:编写一个程序,检查3个变量x、y和z,输出其中最大的奇数。如果其中没有奇数,就输出一个消息进行说明。

代码语言:javascript
复制
# 解法1
def odd_max_input(x, y, z):
    list = []
    for i in [x, y, z]:
        if i % 2 == 1:
            list.append(i)
    if len(list) == 0:
        print('没有奇数')
    else:
        print(max(list))
代码语言:javascript
复制
# 解法2
def odd_max_input(x,y,z):
    a=sorted([x,y,z],reverse=True)
    for i in a:
        if i%2==1:
            return i
    print('没有奇数')
代码语言:javascript
复制
# 解法3
def odd_max_input2(x,y,z):    
    a=[x,y,z]
    max =0
    for i in a:
        if i%2==1:
            if i > max:
                max = i
    if max==0:  
        print('没有奇数')
    else:
        print(max)

2.实际练习:将以下代码中的注释替换为while循环语句。 numXs = int(input('How many times should I print the letter X? ')) toPrint = '' numXss=abs(numXs)concatenate X to toPrint numXs times

代码语言:javascript
复制
numXs = int(input('How many times should I print the letter X? '))
toPrint = ''
while numXss!=0:
    toPrint = toPrint+'X'
    numXss=numXss-1
print(toPrint)

3.实际练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数。如果用户没 有输入奇数,则输出一个消息进行说明。

代码语言:javascript
复制
# 解法1
a=0
numXs =[]
while a!=10:
    b=int(input('please input 10 int '))
    numXs.append(b)
    a+=1
numXss=sorted(numXs,reverse=True)
c=0
for i in numXss:
    c+=1
    if i%2==1:
        print('最大的奇数是{}'.format(i))
        break
    elif c==10:
代码语言:javascript
复制
# 解法2
r = input('输入10个数字,用,[英文格式]间隔:')
list = [i for i in map(lambda i: int(i), r.split(',')) if i % 2 == 1]
print(list)
if len(list) == 0:
    print('no odd')
else:
    print(max(list))
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Datawhale 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本概念
    • 1. 编程语言的分类
    • 2. Python 基本元素
    • 3. 程序分支
    • 4. 字符串和输入
    • 5. 迭代
    • 编程练习
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档