Python编程基础(中国mooc)1

指令和程序:
每台计算机都有自己的指令( Instruction Instruction Instruction Instruction )集合,每条指令可以让计算机完成 一个最基本的操作。
程序( Program Program )则是由一系列指令根据特定规组合而成,在计算机上执行程序的过程实质上就是组成程序的各条指令按顺序依次执行的过程。


使用Python 3.x环境创建Python脚本文件时,需要将文件编码格式设置为UTF-8,否则运行脚本时可能会报错。例如,如果在使用ANSI编码的Python脚本文件中输入代码并运行,则会出现如下错误信息提示:
SyntaxError: Non-UTF-8 code starting with '\xcd' in file
d:/pythonsamplecode/01/helloworld.py on line 4, but no encoding declared; see
http://python.org/dev/peps/pep-0263/ for details

 

Python语言对于行首缩进的方式没有严格限制,既可以使用空格也可以使用制表符(Tab键),常用对代码进行一个层次缩进的方式有:1个制表符,2个空格,或者4个空格。


在编写Python程序时,主要会遇到两类错误:
语法错误和逻辑错误
当执行到有语法错误的代码时,Python解释器会显示出错信息,开发者
可根据提示信息分析错误原因并解决
Ø然而,Python解释器并无法发现逻辑错误,当执行有逻辑错误的代码时,
解释器不会报任何错误,但最后的执行结果会与预期不一致.

 

对于赋值运算,会先计算赋值运算符右边的表达式的值,再将计算结果赋给左边的变量。

 

a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
则print(a)的输出结果是:{True, 2.5, 5.3, 'test', 10, (3+4j)}

 

print(“姓名:%5s,年龄:%5d,成绩:%6.2f”%(“tom”,19,86.5))的输出结
果是:姓名:□□tom,年龄:□□□19,成绩:□86.50

 

九九乘法表:
for i in range(1,10):
    for j in range(1,i+1):
        print( j,"*",i,"=",i*j,end=' ')
    print('\n')

 

整型数字包括正、 0和负整数,不带小点无大限制
不加任何前缀为十进制整数
整数可以使用不同的进制来表示
加前缀 0o 为八进制整数
加前缀 0x 则为十六进制整数

 

a,b,c =10,0o10,0x10 #a =10,0o10,0x10 #a 、b、c的值分别为 10 、8、16

 

3.25e3 是科学记数法的表示方式,其中 e表示 10 , 因此3.25e3 实际上表示的浮点数是 3.25*10 3=3250.0


ls[0:2]=[] #将列表ls中前两个元素替换为空列表[],即将前两个元素删除

 


在对列表中的元素赋值时,既可以通过“ls[idx]=a”这种方式修改单
个元素的值,也可以通过“ls[beg:end]=b”这种方式修改一个元素或
同时修改连续多个元素的值。


在对列表中的元素赋值时,既可以通过“ls[idx]=a”这种方式修改单个元素的值,也可以通过“ls[beg:end]=b”这种方式修改一个元素或同时修改连续多个元素的值。但要注意,在通过'Is[beg:end]=b'这种方式赋值时,b是另一个列表,其功能是用b中各元素替换Is中beg至end-1这些位置上的元素,赋值前后列表元素数量允许发生变化。

 

字符串、列表和元组的元素都是按下标顺序排列,可通过下标直接访问,这样的数据类型统称为序列。其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。

 

与元组和列表类似 ,Set (集合 )中同样可以包 含多个不同类型的元素,但集合中的各元素无序 、 不允许有相同元素且素必须是可哈希(hashable hashable )的对象 。
可哈希对象是指拥有__hash__(self)内置函数的对象 。列表 、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。元组、字符串和数值都是可哈希对象。

 

与字符串、列表元组等序类型不同,集合中的元素不能使用下标方式访问。
集合主要用于做并、交、差等集合运算,以及基于集合进行元素的快速检索。
{} 用于创建空字典,如果要创建一个空集合,则需要使用set()。

 


1.a={'one':1,'two':2,'three':3}
2.b=dict(one=1,two=2,three=3)
3.c=dict(zip(['one','two','three'],[1,2,3]))
4.d=dict([('one',1),('two',2),('three',3)])
5.e=dict({'one':1,'two':2,'three':3})
这5条语句创建的5个字典对象的元素完全相同,使用print函数查看每一个变量,都能得到如下输出结果:{'one':1,'two':2,'three':3}

 

zip函数的参数是多个可迭代的对象(列表等),其功能是将不同对象中对应的元素分别打包成元组,然后返回由这些元组组成的列表。
在Python 3.x中为了减少内存,zip函数返回的是一个对象,可以通过list函数转换为列表,如通过"list(zip(['a','b','c'],[1,2,3]))"可得到列表“[('one',1),('two',2),('three',3)]”。


与列表等序对象不同,在访问字典中的元素时不能通过下标方式访问,而是通过键访问。

 

占位运算符:
运算符类似于C语言中sprintf或printf函数中使用的占位符,在字符串中可以一些占位符用来表示不同类型的数据,而实际的数据值在字符串之外给出。
%d----有符号整型十进制数;
%s----字符串;
%f或%F----有符号浮点型十进制数。

 

比较运算返回的结果是布尔值True或False。在执行程序时,程序中的每条语句并不一定是按顺序依次执行。比较运算的主要作用是设置条件,某些语句在满足条件时才会执行一次(即条件语句),而某些语句在满足条件时会重复执行多次(即循环语句)。


 

十进制转二进制:

 

 

二进制转十进制:

 

身份运算符:

 

成员运算符:

成员运算符用于判断一个可迭代对象(序列、集合或字典)中是否包含某个元素。
x in y: 如果x是可迭代对象y的一个元素,则返回True;否则,返回False.
x not in y:如果x不是可迭代对象y的一个元素,则返回True;否则,返回False.

使用成员运算符判断一个数据是否是字典中的元素,实际上就是判断该数据是否是字典中某个元素的键。

x,y='one',{'one':1,'two':2,'three':3}
print(x in y) #输出"True';
print(1 in y) #输出"False";

 

 

运算符的结合性:

对于具有相同优先级的运算符,其运算顺序由结合性来决定。结合性包括左结合和右结合两种,左结合是按照从左向右的顺序完成计算,而右结合是按照从右向左的顺序完成计算。例如,表达式5-3+6中,“-”和“+”优先级相同,它们是左结合的运算符,因此会先计算5-3,再计算2+6;表达式a=b=1中,“=”是右结合的运算符,因此会先计算b=1,再计算a=b。

 


pass表示一个空操作,只起到一个占位作用,执行时什么都不做。
在某些必要的语句(如条件语句中的各语句序列)还没有编写的情况下,如果要运行程序,则可以先在这些必要语句处写上“pass”,使得程序不存在语法错误、能够正常运行。
实际上,pass与条件语句并没有直接关系,在程序中所有需要的地方都可以使用pass作为占位符。比如,在后面将要学习的循环语句中,也可以使用pass作为占位符。
if score>=60:
    pass #什么都不做
else:
    print('不及格')

 


遍历:

“遍历”这个词在计算机程序设计中经常会用到,其表示对某一个数据中的数据元素按照某种顺序进行访问,使用每个数据元素访问且仅访问一次。
如对于列表alst=['a','b','c']中的3个元素,如果依次访问了这3个元素,且每个元素仅访问了一次,则可以说对列表完成了一次遍历。


使用for遍历字典中的元素时,每次获取到的是元素的键,通过键可以再获取到元素的值。
adict={'a':1,'b':2,'c':4}
for k in adict:
    print('%s:%d' %(k,adict[k]))


range函数返回的是一个可迭代对象,通过list函数可将该对象转换为列表。
list(range(4))
Out[78]: [0, 1, 2, 3]

 

 

 

#使用while循环实现1到n之间所有奇数的和
n=eval(input('请输入n的值(整数):'))

i=1
sum=0
while i<n:
    sum+=i
    i=i+2
    print(sum)
print(sum)

 

同时访问可迭代对象的索引和元素值:

法1:
如果希望不仅获取到每一个元素的值,而且能获取到每一个元素的索引,则可以通过len函数获取可迭代对象中的元素数量,再通过range函数生成由所有元素索引组成的可迭代对象。
lst=['a','b','c']
for i in range(len(lst)):
    print(i,lst[i])
法2:
也可以利用enumerate函数返回的索引序列对象同时获得每个元素的索引和值。
lst=['a','b','c']
for k,v in enumerate(lst,1): #设置索引从1开始(默认为0)
    print(k,v)

 


形参是定义函数时函数名后面的一对小括号中给出的参数列表。
实参是在调用函数时函数名后面的一对小括号中给出的参数列表。
能够将一个函数的运算结果返回到调用函数的位置,以使得可以继续用该运算结果再去参与其它运算,此时则应使用return语句。
定义一个包,就是创建一个文件夹并在该文件夹下创建一个__init__.py文件,文件夹的名字就是包名。
猴子补丁是指在运行时动态替换已有的代码,而不需要修改原始代码。
按照作用域的不同,Python 中的变量可以分为局部变量和全局变量。
在一个函数中使用 global 关键字,可以声明在该函数中使用的是全局变量、而非
局部变量。
通过 nonlocal 关键字,可以使内层的函数直接使用外层函数中定义的变量。
递归 函数是指在一个函数内部通过调用自己来完成一个问题的求解。
lambda 函数也称为匿名函数,是一种不使用def 定义函数的形式,其作用是能
快速定义一个简短的函数。
lambda 函数的函数体只是一个表达式,所以lambda 函数通常只能实现比较简单
的功能。
如果内层函数使用了外层函数中定义的局部变量,并且外层函数的返回值是内层
函数的引用,就构成了闭包 。
利用装饰器,可以在不修改已有函数的情况下向已有函数中注入代码,使其具
备新的功能。
一个装饰器可以为多个函数注入代码,一个函数也可以注入多个装饰器的代码。
装饰器实际上就是一种闭包。

 


斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。斐波那契数列前两项的值都为1,后面每一项的值等于其前两项的和,即:F(1)=F(2)=1,F(n)=F(n-1)+F(n-2)(n>2)。求斐波那契数列第n 项的值。
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)

 


为什么要使用“模块”:

Python提供了交互式和脚本式两种运行方式。当要执行的代码比较长、且需要重复使用时,我们通常将代码放在扩展名为.py的Python脚本文件中。
当我们要编写一个规模比较大的程序时,如果将所有代码都放在一个脚本文件中,则不方便维护和多人协同开发。
对于可以在多个程序中重用的功能,我们也最好将其放在单独的脚本文件中,以方便多个程序通过引用该脚本文件、共享这些功能。
此时,我们需要按照代码功能的不同,将代码分门别类地放在不同的脚本文件中,这些脚本文件就称为是模块(Module)。

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值