好久没有练习过Python的代码了,最近要开始写界面了,所以简要复习了一下。
"""1.编码问题"""
# 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串
print("你好,Python")
""" 2.关键字 """
import keyword
count = 0
for i in keyword.kwlist:
print(i, end=' ') # 关键字之间以空格作为分割
count += 1
if count % 10 == 0: # 控制每行输出10个关键字
print(end='\n')
"""3.复数"""
number1 = 3
number2 = 4
temp = complex(number1, number2)
print(temp)
print("{0}的实部和虚部分别为{1},{2}".format(temp, temp.real, temp.imag))
"""4.除法运算"""
a = 10
b = 3
print("{0}除以{1}等于{2}".format(a, b, a/b)) # /返回浮点型
print("{0}整除{1}等于{2}".format(a, b, a//b)) # //为整除运算
a = 20.9
print("{0}整除{1}等于{2}".format(a, b, a//b)) # //分子或者分母至少有一个是浮点数,结果为浮点数
b = 2
print("{0}除以{1}等于{2}".format(a, b, a/b))
"""5.常用数学函数"""
import math
# 绝对值函数 abs() 是内置函数 还可以用在复数中
print("abs(3+4j)=", abs(3+4j))
# fabs() 函数在 math 模块中定义 只对浮点型跟整型数值有效
print("math.fabs(-10)=", math.fabs(-10))
# 上入整数
print("math.ceil(-4.3)=", math.ceil(-4.3))
# 下舍整数
print("math.floor(4.3)=",math.floor(4.3))
# e的x幂
print("math.exp(1)=", math.exp(1))
# 对数
print("math.log(100, 10)", math.log(100, 10))
print("math.log10(1000)=", math.log10(1000))
# 最大最小值
print("max('a', 'A')=", max('a', 'A'))
print("min(10, 20)=", min(10, 20))
# 幂函数
print("pow(2, 3)=", pow(2, 3))
# 平方根
print("math.sqrt(9.0)=",math.sqrt(9.0))
# 返回整数与小数部分
print(math.modf(10.8), math.modf(10.8)[0], math.modf(10.8)[1])
"""6.随机数函数"""
import random
# 随机生成的一个实数,它在[0,1)范围
print("random:", random.random() * 21 + 100) # # 实现 100-120 随机小数
# random integer in range [a, b], including both end points
print("randint:", random.randint(3, 7))
# Get a random number in the range [a, b) or [a, b] depending on rounding
print("uniform:", random.uniform(100, 105))
# Choose a random element from a non-empty sequence
# 从0到9中随机挑选一个整数
print("choice:", random.choice(range(10)))
"""7.help()函数"""
help(print) # 查看print定义
"""8.列表推导式"""
# [表达式 for 变量 in 列表]
# [表达式 for 变量 in 列表 if 条件]
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print([x**2 for x in li])
print([x**2 for x in li if x>5])
print(dict([(x, x*10) for x in li]))
print([(x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8])
print([x*y for x in [1, 2, 3] for y in [1, 2, 3]])
"""9.列表的复制"""
# 通过切片的方式复制 两个列表,即重新开辟了空间
# 通过=复制 一个列表
# 通过copy() 两个列表
my_foods = ['pizza', 'falafel', 'carrot cake']
# friend_foods = my_foods[:]
# friend_foods = my_foods
friend_foods = my_foods.copy()
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
"""10.创建二维列表"""
# 行 Row 列 Column
list_2d = [[0 for col in range(2)] for row in range(3)]
print(list_2d)
"""11.元组"""
# 创建
tup1 = ()
tup2 = (5,) # 只有一个元素时需要加上逗号
"""12.集合:无序的不重复元素序列"""
# 创建 :可以使用大括号 { } 或者 set() 函数创建集合,创建一个空集合必须用 set() 而不是 {}
a = set('abracadabra')
b = set('alacazam')
print("集合a:", a)
print("集合b:", b)
# 集合间运算
print("a - b:", a - b) # 在a不在b
print("a | b", a | b) # 或者在a或者在b
print("a & b", a & b) # 同时在a和b
print("a ^ b", a ^ b) # 不同时在a和b
# 13.Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 10:
print(b, end=' ') # 以空格分隔每个数
a, b = b, a+b # 先计算=右边的表达式,然后同时赋值给左边对应的变量
"""14.range()"""
# help(range)
# range(start, stop[, step]) -> range object
# Return an object that produces a sequence of integers from start (inclusive)to stop (exclusive) by step.
for i in range(5): # 默认从0开始
print(i, end=' ')
print()
for i in range(5, 10): # 左闭右开区间
print(i, end=' ')
print()
for i in range(5, 10, 2): # 第三个参数表示步长
print(i, end=' ')
print()
# 创建一个列表
list1 = list (range(5))
print("列表:", list1)
# 遍历序列
a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)):
print(i, a[i])
"""15.enumerate 函数"""
# enumerate(iterable[, start]) -> iterator for index, value of iterable
# enumerate is useful for obtaining an indexed list:(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
sequence = [12, 34, 34, 23, 45, 76, 89]
for i, j in enumerate(sequence):
print(i, j, sep=":", end=" ")
# 16.函数返回值
def fun(a, b):
"""返回多个值,结果以元组形式表示"""
return a, b, a + b
print(fun(1, 2))
"""17.字典的遍历"""
# 使用items()
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items(): # 关键字和对应的值可以使用 items() 方法同时解读出来
print(k, v)
# 使用zip()
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers): # 同时遍历两个或更多的序列,可以使用 zip() 组合
print('What is your {0}? It is {1}.'.format(q, a))
# 使用reversed()
for i in reversed(range(1, 10, 2)):
print(i, end=" ")
print()
# 使用sorted()
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for f in sorted(set(basket)): # 排序
print(f, end=" ")
"""18.模块的使用"""
# 模块是一个包含所有用户定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能
import sys
print('命令行参数如下:')
for i in sys.argv: # 从程序外部向程序传递参数
print(i, end=' ')
print('\nPython 路径为:', sys.path, '\n') # 获取指定模块搜索路径的字符串集合
"""19.__name__"""
# 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
"""20.文件读写"""
f = open("temp.txt", "a") # 追加形式打开文件,文件不存在时会创建
f.write("今天是2018年12月11日,现在是21点24分") # 写入文件
f.close() # 关闭文件
f = open("temp.txt", "r")
str_read = f.read() # 读取文件
print("read:", str_read)
f.close() # 关闭文件
"""21.with关键字:结束后,会争取关闭文件"""
with open("temp.txt", "r") as f:
str_read = f.read()
f.close()
"""22.pickle模块
序列化操作:将程序中运行的对象信息保存到文件中去,永久存储
反序列化操作:我们能够从文件中创建上一次程序保存的对象"""
import pickle
data = ['aa', 'bb', 'cc']
# dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
with open("pickle.pk", 'wb') as f:
pickle.dump(data, f)
# load 从数据文件中读取数据,并转换为python的数据结构
with open("pickle.pk", 'rb') as f:
data2 = pickle.load(f)
print(data2)
"""23.异常处理"""
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("division by zero!")
else: # try字句没有发生异常时执行
print("result is", result)
finally: # 无论是否发生异常,均执行finally字句
print("executing finally clause")
divide(10, 5)
divide(10, 0)
"""24.类的定义和使用"""
class People: # People 类
name = ''
age = 0
__weight = 0 # 两个下划线开头,声明该属性为私有
# 类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例
def __init__(self, name, age, weight): # 定义构造函数
self.name = name
self.age = age
self.__weight = weight
def speak(self):
print("调用People类的speak方法")
print("{0}说:我今年{1}岁。".format(self.name, self.age))
class Speaker: # Speaker 类
topic = ''
name = ''
def __init__(self, topic, name): # 定义构造函数
self.topic = topic
self.name = name
def speak(self):
print("调用Speaker类的speak方法")
print("我是{0},我今天演讲的主题是{1}".format(self.name, self.topic))
# 类的单继承,Student类继承People类
class Student(People):
grade = ''
# 定义子类的构造函数
def __init__(self, name, age, weigth, grade):
People.__init__(self, name, age, weigth) # 调用父类的构造方法
self.grade = grade
# 覆盖父类的方法
def speak(self):
print("调用Student类的speak方法")
print("{0}说:我今年{1}岁,我在读{2}年级。".format(self.name, self.age, self.grade))
# 类的多继承
class Sample(Speaker, Student):
def __init__(self, name, age, weight, grade, topic):
Student.__init__(self, name, age, weight, grade)
Speaker.__init__(self, topic, name)
s = Student('lh', 21, 45, 4)
s.speak()
test = Sample("tim", 23, 90, 4, "Python")
test.speak() # 方法名同,默认调用的是在括号中排前地父类的方法
Pycharm
1.调整tab键为4个空格
2.设置命令行参数