局部变量

   全局变量

def test():
# 声明使用全局变量x
global x
x = 100
y = 300 # 局部变量:作用域和生存周期仅在从定义开始到函数结束 x = 200 # 全局变量:作用域从定义开始到进程结束
test()
print(x)

    Δ3

'''
1990.1.1 星期1
2018.11.1
''' def isleap(y):
'''
function:判断是否为闰年
y:判断的年份
return:True / False
'''
return True if (y % 4 == 0 and y % 100 != 0 or y % 400 == 0) else False def dayofmonth(m, y):
'''
function:m月有多少天
'''
if m in (1,3,5,7,8,10,12):
days = 31
elif m in (4,6,9,11):
days = 30
else:
if isleap(y):
days = 29
else:
days = 28
return days def main():
year, month = eval(input('请输入年份和月份(year,month):')) sumdays = 0
# 1990~year
for y in range(1990, year):
sumdays += (365+isleap(y)) # year.1.1 ~ year.month.1
for m in range(1, month):
sumdays += dayofmonth(m, year) sumdays += 1 weekday = sumdays % 7 # 计算month月有多少天
monthdays = dayofmonth(month, year) # 打印日历
m = '一二三四五六七八九十'
if month == 11:
monthstr = '十一'
elif month == 12:
monthstr = '十二'
else:
monthstr = m[month-1]
print('\33[34m{:>7}月 {}'.format(monthstr, year))
print('\33[0m', end='') # 关闭属性
print('\33[47m日 一 二 三 四 五 六')
print('\33[0m', end='') # 关闭属性
print(' '*weekday, end='')
for d in range(1, monthdays+1):
print('{:>2}'.format(d), end=' ' if (weekday+d)%7 else '\n')
print() # 调用函数
main()

  练习题:

import random

'''
练习1:定义一个函数common_divisori(),求得两个整型数的最大公约数
'''
def common_divisori(m, n):
if m < n:
m, n = n, m
# 辗转相除
while True:
mod = m % n
if mod == 0:
return n
m = n
n = mod '''
练习2:定义一个函数maxoflist(),不使用max内置函数,实现求得整型列表的最大值
'''
def maxoflist(l):
m = l[0]
for i in range(1, len(l)):
if l[i] > m:
m = l[i]
return m '''
练习3:定义一个函数sortoflist(),不使用sorted()和sort()的基础上为一个整型列表排序(从小到大)
'''
# 冒泡排序
def sortoflist(l):
n = len(l)
for i in range(n-1):
for j in range(n-i-1):
if l[j] > l[j+1]:
l[j], l[j+1] = l[j+1], l[j] return l def main():
'''
m,n = eval(input("请输入两个整型数:"))
res = common_divisori(m, n)
print("{}和{}的最大公约数是:{}".format(m, n, res))
'''
l = [random.randint(1, 100) for i in range(10)]
'''
print(l)
res = maxoflist(l)
print("最大的元素是%d" % res)
'''
l = sortoflist(l)
print(l) main()

  参数类型:
    位置参数
    默认参数
    可变参数
    关键字参数

# 位置参数
def max2num(x, y):
print(x, y)
return x if x > y else y # 默认参数
def power(x, y=2):
s = 1
while y:
s *= x
y -= 1
return s # 默认参数的默认值最好不是可变类型
'''
def add_end(l=[]):
l.append('python')
return l
''' def add_end(l=None):
if l == None:
l = []
l.append('python')
return l # 可变参数
def sumall(*numbers):
# print(type(numbers))
s = 0 for i in numbers:
s += i return s # 位置参数在可变参数后
def test(*args, n=100):
print(n, args) # 关键字参数
def stuinfo(name, age, city='北京', **kw):
print(name, age, city, kw) # 命名关键字参数
def stuinfo2(name, age, city='北京', *, height, gender):
print(name, age, city, height, gender) # 多种参数类型混合使用 位置参数在第一位,关键字参数一定在最后
def test2(locate, *args, name, age, default=100, **kw):
print(locate, args, default, name, age, kw) res = max2num(10, 20)
print(res) res = max2num(y=100, x=200)
print(res) print(power(10, 4))
print(power(10)) ls = [1,2,3]
add_end(ls)
print(ls) print(add_end())
print(add_end())
print(add_end()) res = sumall(1,2,3,4,5)
print(res) test(1,2,4,5) stuinfo('张', 20, height=178, gender='M', school='河北农大')
stuinfo2('张', 20, height=178, gender='M')
stuinfo2('张', 20, gender='M', height=175) test2(1, 'hello', 'world', name='uplooking', age=14, python='guido', height=180)

  递归调用:
    在函数内调用函数本身
    1. 找到终止条件
    2. 找到递归条件

def sumn(n):
'''
n的前n项和
'''
if n == 0:
return 0
return n + sumn(n-1)
print(sumn(10))

  练习:

'''
Fibnacci数列的第n项
'''
def fibnacci(n):
if n <= 0:
return False
if n == 1:
return 0
elif n == 2:
return 1
return fibnacci(n-1) + fibnacci(n-2)

for i in range(1, 21):
print(fibnacci(i), end = ' ')
print()

Python_day5的更多相关文章

  1. python_day5学习笔记

    一.正则表达式 字符: \d 匹配任何十进制数:相当于类[0-9] \D 匹配任何非数字字符:相当于类[^0-9] \s  匹配任何空白字符:相当于类[  \t\n\r\f\v] \S  匹配任何非空 ...

随机推荐

  1. gitea 源码阅读笔记 002 生成无依赖单文件可执行包

    gitea bindata static gitea 可以通过 make generate 生成一个单文件可执行程序, 该文件不需要任何其它依赖,直接可以单独执行. 对于用户的安装.升级和生成dock ...

  2. Python 爬虫 Vimeo视频下载链接

    python vimeo_d.py https://vimeo.com/228013581 在https://vimeo.com/上看到稀罕的视频 按照上面加上视频的观看地址运行即可获得视频下载链接 ...

  3. C#使用ITextSharp操作pdf

    在.NET中没有很好操作pdf的类库,如果你需要对pdf进行编辑,加密,模板打印等等都可以选择使用ITextSharp来实现. 第一步:可以点击这里下载,新版本的插件升级和之前对比主要做了这几项重大改 ...

  4. 性能测试day06_需求设计的学习(性能重中之重,思维方向永远重于工具)

    今天接着来学习下性能知识,本来是应该先学习一下LR的用法的,不过听完云层大大的课之后,我感觉工具没有这一篇来的重要,我们知道性能有三大步骤:负载->监控->调优,但是在这个之前我们首先要搞 ...

  5. C#各种小问题汇总不断更新

    IIS Express Worker Process已停止工作-->管理员身份运行CMD 输入netsh winsock reset 回车OK 未能从程序集“System.ServiceMode ...

  6. windows清空电脑的DNS缓存

    清空电脑的DNS缓存 按"Win+R"系统热键打开"运行"窗口,进入terminal终端 输入"ipconfig /flushdns"命令后 ...

  7. hive 表锁和解锁

    场景: 在执行insert into或insert overwrite任务时,中途手动将程序停掉,会出现卡死情况(无法提交MapReduce),只能执行查询操作,而drop insert操作均不可操作 ...

  8. MySql:SELECT 语句(三) WHERE 指定查询条件

    1.WHERE 子句条件操作符 包括:> .<.>=.<=.!= .=.BETWEEN ... AND ...(在指定的两个值之间) 示例: 1)select * from s ...

  9. vs2010提取资源

    setlocal enabledelayedexpansion rem cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin set R ...

  10. nmap的使用

    安装完nmap后,看网上都是直接cmd后nmap的方式来查看是否安装成功,但实际我总是不对,然后自己想着进入安装包执行命令,果然成功.