学习之旅的第二周在懵懂中完结,函数的“恶心”程度已经让一个小白晕了头,细细回味一下,函数是数学的一种提现,但是自己的数学知识已经遗忘的差不多了,各种数学公式早已抛之脑后,真的依照了那句老话“学好数理化,走遍天下都不怕”,看来有必要去补一下了。其实也没有必要过于害怕,Python 的特性就是让程序更简单易懂,明白函数的写的格式,注意点,身为小白的我眼里似乎是套好公式即可,是否是这样还有待考证。这种小结
函数
函数的作用
将重复代码统一定义,在程序中直接调用,而不是反复出现。代码的重复让代码更加冗长,完全没有遵循python之禅简洁。函数能提高应用的模块性,和代码的重复利用率
定义函数
1.函数代码依照def 开一头
2.任何传入参数和自变量必须放在园括号中,圆括号之间可以用于定义参数
3.公司性质的我们要注释
4.return 表达结束函数,选择性的返回一个值,反之返回None
下面举个例子
m = int(input('m = '))
n = int(input('n = '))
fm = 1
for num in range(1, m + 1):
fm += num
fn = 1
for num in range(1, n + 1):
fn += num
fmn = 1
print(fm , fn )
修改过后
def factorial(num):
求1到num 的个
:param num: 非负整数
:return: num个数之和
"""
result = 1
for n in range(1, num+1):
result += n
return result
m = int(input('m = '))
n = int(input('n = '))
# 当需要计算阶乘的时候不用再写循环求阶乘而是直接调用已经定义好的函数
print(factorial(m) ,factorial(n) )
注:其实python 的开发生态圈已经很完善了,我们可以直接import math 这里面包含的函数都是常用的,
甚至生僻的也有哟,所以记不住数学公式也没关系啦,记住math中间的函数也能起到很大作用
函数的参数
2中方式,1可以直接在函数中默认值 也可以后期自定义参数
帖几个老师给我们讲解的例子
求最大公约数
def gcd(x, y):
(x, y) = (y, x) if x > y else (x, y)
for factor in range(x, 0, -1):
if x % factor == 0 and y % factor == 0:
return factor
def lcm(x, y):
return x * y // gcd(x, y)
判断一个数是不是回文数的函数。
def is_palindrome(num):
temp = num
total = 0
while temp > 0:
total = total * 10 + temp % 10
temp //= 10
return total == num
字符和常用结构
字符串
def main():
str1 = 'hello, world!'
# 通过len函数计算字符串的长度
print(len(str1)) # 13
if __name__ == '__main__':
main()
列表
它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型创建一个列表,我们可以根据标索引来访问列表中的值.索引的起始值是0,1,2,3,4。我们也可以运用切片来获取多个值。
list1 = ['happy’ ,' apple', 'hello','banana']
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print ( list1[0])
print ( list2[1:5])
元组
元祖和列表有着类似的效应。表面区区别在于符号:列表是[].元祖().,本职区别,元祖不能修改元素, 而列表可以
集合
符号{},不会有重复的元素出现
字典
另一种可变容器模型,且可存储任意类型对象字典的每个键值 key --> value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
(1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
(2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
对象
开始最恐怖的,在老师的要求下我们开始对原来的某些程序进行修改以对象的形式呈现出来。把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派
初次见面
标识class. 后面必须接的必须以大些开头,暂时不多讲上个练习\
class Clock(object):
"""
数字时钟
"""
def __init__(self, hour=0, minute=0, second=0):
"""
构造器
:param hour: 时
:param minute: 分
:param second: 秒
"""
self._hour = hour
self._minute = minute
self._second = second
def run(self):
"""走字"""
self._second += 1
if self._second == 60:
self._second = 0
self._minute += 1
if self._minute == 60:
self._minute = 0
self._hour += 1
if self._hour == 24:
self._hour = 0
def __str__(self):
"""显示时间"""
return '%02d:%02d:%02d' % \
(self._hour, self._minute, self._second)
def main():
clock = Clock(23, 59, 58)
while True:
print(clock)
sleep(1)
clock.run()
刚接触不做过多的理解,下周继续