Python编程知识总结及例题

Python编程知识总结及例题

    • Python标识符
    • Python有五个标准的数据类型
    • Python支持四种不同的数字类型
    • Python数据类型转换
    • Python 运算符
    • Python算术运算符
    • python比较运算符
    • Python赋值运算符
    • Python位运算符
    • Python逻辑运算符
    • Python 循环语句
    • Python Number(数字)
    • python数学函数
    • Python字符串
    • Python列表
    • Python元组
    • Python字典(dictionary)
    • Python字典包含了以下内置函数:
  • 例题

Python标识符

在 Python 里,标识符有字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;
以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。

Python有五个标准的数据类型

Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

Python支持四种不同的数字类型

int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)

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 转换为一个列表
set(s)
转换为可变集合
dict(d)
创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s)
转换为不可变集合
chr(x)
将一个整数转换为一个字符
unichr(x)
将一个整数转换为Unicode字符
ord(x)
将一个字符转换为它的整数值
hex(x)
将一个整数转换为一个十六进制字符串
oct(x)
将一个整数转换为一个八进制字符串

Python 运算符

算术运算符
比较(关系)运算符
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符
运算符优先级

Python算术运算符

+加 - 两个对象相加a + b 输出结果 30
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10
*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200
/除 - x除以yb / a 输出结果 2
%取模 - 返回除法的余数b % a 输出结果 0
幂 - 返回x的y次幂ab 为10的20次方, 输出结果 100000000000000000000
//取整除 - 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

python比较运算符

以下假设变量a为10,变量b为20:
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 true.
<>不等于 - 比较两个对象是否不相等(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位运算符

下表中变量 a 为 60,b 为 13,二进制格式如下:
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1(a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。

Python逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:
andx and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

Python 循环语句

Python提供了for循环和while循环(在Python中没有do…while循环):
while 循环在给定的判断条件为 true 时执行循环体,否则退出循环体。
for 循环重复执行语句
嵌套循环你可以在while循环体中嵌套for循环

Python Number(数字)

Python 支持四种不同的数值类型:
整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。
长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。
浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

python数学函数

abs(x)返回数字的绝对值,如abs(-10) 返回 10
ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…)返回给定参数的最大值,参数可以为序列。
min(x1, x2,…)返回给定参数的最小值,参数可以为序列。
modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y)x**y 运算后的值。
round(x [,n])返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

Python字符串

Python转义字符
在需要在字符中使用特殊字符时,python用反斜杠()转义字符。
如下表:
(在行尾时)续行符
\反斜杠符号
'单引号
"双引号
\a响铃
\b退格(Backspace)
\e转义
\000空
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,yy代表的字符,例如:\o12代表换行
\xyy十六进制数,yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

Python列表

Python包含以下函数:
1cmp(list1, list2)比较两个列表的元素
2len(list)列表元素个数
3max(list)返回列表元素最大值
4min(list)返回列表元素最小值
5list(seq)将元组转换为列表
Python包含以下方法
1list.append(obj)在列表末尾添加新的对象
2list.count(obj)统计某个元素在列表中出现的次数
3list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)将对象插入列表
6list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)移除列表中某个值的第一个匹配项
8list.reverse()反向列表中元素
9list.sort([func])对原列表进行排序

Python元组

Python的元组(tuple)与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组内置函数:
Python元组包含了以下内置函数
1cmp(tuple1, tuple2)比较两个元组元素。
2len(tuple)计算元组元素个数。
3max(tuple)返回元组中元素最大值。
4min(tuple)返回元组中元素最小值。
5tuple(seq)将列表转换为元组。

Python字典(dictionary)

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
字典内置函数及方法:

Python字典包含了以下内置函数:

1cmp(dict1, dict2)比较两个字典元素。
2len(dict)计算字典元素个数,即键的总数。
3str(dict)输出字典可打印的字符串表示。
4type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。
Python字典包含了以下内置方法:
1dict.clear()删除字典内所有元素
2dict.copy()返回一个字典的浅复制
3dict.fromkeys(seq[, val]))创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
4dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值
5dict.has_key(key)如果键在字典dict里返回true,否则返回false
6dict.items()以列表返回可遍历的(键, 值) 元组数组
7dict.keys()以列表返回一个字典所有的键
8dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9dict.update(dict2)把字典dict2的键/值对更新到dict里
10dict.values()以列表返回字典中的所有值
11pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

例题

1 用单个for,循环十次在同一行内打印十个数字’0 1 2 3 4 5 6 7 8 9 ’
字符之间用单个空格分隔

for i in range(10): #将0到9赋值给i
print(i, end=’ ‘) #输出结果
print(’’)

2 .用单个for配合if条件,循环九次打印下列矩阵:
1 2 3
4 5 6
7 8 9
提示:当循环指标能够被3整除时,输出一个换行符号\n

for i in range(1,10): #1到9赋值给i
print(i, end=’ ‘) #输出i,末尾不换行,加空格
if i%3==0 : #如果i能整除3,即条件为真,执行下面的语句
print(’\n’, end=’’) #末尾换行

3 用单个while配合if条件,循环12次,打印12个星号,每行4个,

i = 1 #定义i为1
while i<13: #添加i的条件
print(’’, end=’’) #输出
if(i%4==0): #如果i除4余数为0
print(’’)
i += 1 #i增加1

4 用双层for循环打印下列乘法表:
11=1
2
1=2 22=4
3
1=3 32=6 33=9

for i in range(1,4): #1到3赋值给i
for j in range(1,i+1): #1到i赋值给j
print(i,’’,j,’=’,ij,sep=’’,end=’ ‘) #i与j相乘并输出
print(’’)

5 用单个for循环打印字符串"甲乙丙丁午己庚辛壬癸"的所有字符。
要求每个字符占据一行

for c in “甲乙丙丁午己庚辛壬癸”: #将甲乙丙丁午己庚辛壬癸赋值给c
print© #输出
print(’\n’, end=’’) #每输出一个字符将换行

6 定义函数,打印九九乘法表
def P99(): #定义函数
for i in range(1,10): #将1到9赋值给i
for j in range(1,i+1): #将1到i赋值给j
print("%1d*%1d=%2d"%(i,j,i*j), end=’ ') #???
print()

7 用for循环计算阶乘 n!
def factor(n): #定义函数
P = 1 #
for i in range(2,n+1): #将2到n赋值给i
P = i #P=Pi
return P #返回P的值

8 斐波那契数列的第 n 项
def fib(n):
“”“f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2]”""
if n <=1:
return n
a,b = 0,1
for i in range(2,n+1):
a, b = b, a+b
return b

9 计算圆周率 pi = 4*(1 - 1/3 + 1/5 - 1/7 + …)
控制精度|1/n|<1e-6

def thePi():
sum = 0
sign = 1
n = 1.0
term = sign/n
while abs(term)>1e-6:
sum += term
sign = -sign
n += 2
term = sign/n
return sum*4

10 def lin(x):
x = x * 2
return x
a = 2
b = lin(a)
print(a, b)

运行结果:2 4

11 a = [(i,j) for i in range(1,3)
for j in range(1,3) if i!=j]
print( a )

运行结果:[(1, 2), (2, 1)]

12 if 0 :
print(‘h’)
elif ‘0’:
print(‘b’)
elif {0}:
print(‘c’)
else :
print(‘ff’)

运行结果:b

13 整数 a and b 的运算法则如下,
if a == 0:
print(a)
else:
print(b)
若a=0, b=-1,则上述程序输出什么?

运行结果:0

14 用模式 r 读取文件 ‘0读取ANSI.txt’ 中的文本,并打印输出
打印时,不能添加额外的换行符、空格等。

  1. 方法一:利用 read 函数,全部读取,一次性全部打印
    fp = open(‘0读取ANSI.txt’, mode=‘r’)
    words = fp.read()
    print(words, end=’’)
    fp.close()

  2. 方法二:利用 readline,每次读取一行,每次打印一行
    fp = open(‘0读取ANSI.txt’, mode=‘r’)
    line = fp.readline()
    while line:
    print(line, end=’’)
    line = fp.readline()
    fp.close()

  3. 方法三:利用readlines,读取全部内容,然后分行打印
    fp = open(‘0读取ANSI.txt’, mode=‘r’)
    lines = fp.readlines()
    for line in lines:
    print(line, end=’’)
    fp.close()

  4. 方法四:利用 文件对象的迭代属性, 每次处理一行
    fp = open(‘0读取ANSI.txt’, mode=‘r’)
    for line in fp:
    print(line, end=’’)
    fp.close()

  5. 方法五:用read函数,每次读取一个字符,并逐字打印
    fp = open(‘0读取ANSI.txt’, mode=‘r’)
    char = fp.read(1)
    while char:
    print(char, end=’’)
    char = fp.read(1)
    fp.close()

15 用 w+ 模式以及默认编码、writelines函数,
shi_ge = [
‘登鹳雀楼\n’, ‘唐·王之涣\n’,
‘白日依山尽,黄河入海流。\n’,
‘欲穷千里目,更上一层楼。\n’ ]

with open(‘1写入UTF32.txt’, mode=‘w+’, encoding=‘UTF-32’) as fp: #将《登鹳雀楼》写入文件 ‘1写入UTF32.txt’, utf32编码,
fp.writelines(shi_ge) #将诗歌打印输出

fp.seek(0)
print(fp.read())

16 题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
‘’’
year = int(raw_input(‘year:\n’))
month = int(raw_input(‘month:\n’))
day = int(raw_input(‘day:\n’))

months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 <= month <= 12:
sum = months[month - 1]
else:
print ‘data error’
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print ‘it is the %dth day.’ % sum

17 题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。       
2.程序源代码:
‘’’
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print ‘%-4d’ % m
h += 1
if h % 10 == 0:
print ‘’
leap = 1
print ‘The total is %d’ % h

18 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
   60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
2.程序源代码:
不支持这个运算符
‘’’
score = int(raw_input(‘input score:\n’))
if score >= 90:
grade = ‘A’
elif score >= 60:
grade = ‘B’
else:
grade = ‘C’
print ‘%d belongs to %s’ % (score,grade)

19 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为’\n’.      
2.程序源代码:
‘’’
import string
s = raw_input(‘input a string:\n’)
letters = 0
space = 0
digit = 0
others = 0
for c in s:
if c.isalpha():
letters += 1
elif c.isspace():
space += 1
elif c.isdigit():
digit += 1
else:
others += 1
print ‘char = %d,space = %d,digit = %d,others = %d’ % (letters,space,digit,others)

20 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:
‘’’
for i in range(1,5): #将1到4赋值给i
for j in range(1,5): #将1到4赋值给j
for k in range(1,5): #将1到4赋值给k
if( i != k ) and (i != j) and (j != k):#如果i、j、k互不相等
print i,j,k #输出i、j、k

你可能感兴趣的:(Python编程知识总结及例题)