<jupyter_start><jupyter_text>函数- 函数可以用来定义可重复代码，组织和简化- 一般来说一个函数在实际开发中为一个小功能- 一个类为一个大功能- 同样函数的长度不要超过一屏  定义一个函数def function_name(list of parameters):        do something![](../Photo/69.png)- 以前使用的random 或者range 或者print.. 其实都是函数或者类<jupyter_code>def fun_name(): #标识+函数名
    pass
def fun_name(): #标识+函数名
    print('你真是一个小天才')
fun_name()#  ()代表函数调用
def fun_name1():
    print('我觉得你一点都不可爱！')
fun_name1()
def panduanjiou():
    '''
    这是一个判断奇偶的程序
    '''
    num = eval(input('输入一个数'))
    if num % 2 ==0:
        print('偶数')
    else:
        print('奇数')
panduanjiou() #shift + tab 弹出解释文档
def panduansushu():
    num = eval(input('输入一个数：'))
#     for i in range (2,100):#输出100以内所有素数
    for j in range(2,num):
        if(num % j == 0):
            print('这个数不是素数')
            break
    else:
        print('这个数是素数')  
panduansushu()
def fun1():
    num_ = eval (input('输入一个数'))
    return num_
fun1()
import os
def kuajiang(name):#函数的传参
    os.system('say {}你真是小邋遢'.format(name))
kuajiang('李火火')#位置参数 不带参数名传递方式
kuajiang(name = '李火火')#带参数名传递方式
def y(x):
    return x ** 2
y (100)
def san(num):
    return num ** 3
def liang(num):
    return num ** 2

def input_():
    num = eval(input('>>'))
    res3 = san(num)
    res2 = liang(num)
    print(res3 - res2)

input_()<jupyter_output>>>500
124750000<jupyter_text>调用一个函数- functionName()- "()" 就代表调用 ![](../Photo/70.png)  带返回值和不带返回值的函数- return 返回的内容- return 返回多个值- 一般情况下，在多个函数协同完成一个功能的时候，那么将会有返回值 ![](../Photo/71.png)- 当然也可以自定义返回None  EP：![](../Photo/72.png)  类型和关键字参数- 普通参数- 多个参数- 默认值参数- 不定长参数  普通参数  多个参数<jupyter_code>import os
def kuajiang(name1,name2,name3):#函数的传参
    os.system('say {}{}{}你们都是小邋遢'.format(name1,name2,name3))
kuajiang(name1='大宝',name2='小宝',name3='小扒皮')
import os
#如果参数含有默认值，一定要统一放到最后面，不能交叉放入！！！
def kuajiang(name1,name2,name3= '小扒皮'):#函数的传参
    os.system('say {}{}{}你们都是小邋遢'.format(name1,name2,name3))
kuajiang(name1='大宝',name2='小宝')
import pandas as pd#默认参数的一种传递方式
pd.read_csv()



#一个例题，判断是否勾选7天内免登陆


account = '<EMAIL>'#数据库里定义账号和密码
password = '<PASSWORD>.'
is_ok_and_y = False #中间值判断：是否勾选了7天内免登录，初始默认不勾选
def login(account_login,password_login):
    if account_login == account and password_login == password:
        print('登录成功')
    else:
        print('账号和密码错误')
login(account_login = '<EMAIL>',password_login ='<PASSWORD>.')
def start():
    global is_ok_and_y #设置一个全局变量
    if is_ok_and_y ==False:
        print('是否七天免登录?y/n')
        res = input('输入y或者n')
        account_login =  input('请输入账号:')
        password_login =  input('请输入密码:')
        if res == 'y':
            login(account_login,password_login)
            is_ok_and_y = True
        else:
             login(account_login,password_login)
    else:
        print('登录成功')

start()<jupyter_output>是否七天免登录?y/n
输入y或者ny
请输入账号:mmjm
请输入密码:<PASSWORD>
账号和密码错误<jupyter_text>默认值参数<jupyter_code>*  重要参数<jupyter_output><empty_output><jupyter_text>强制命名  不定长参数- \*args> - 不定长，来多少装多少，不装也是可以的  - 返回的数据类型是元组  - args 名字是可以修改的，只是我们约定俗成的是args- \**kwargs > - 返回的字典  - 输入的一定要是表达式（键值对）- name,\*args,name2,\**kwargs  使用参数名<jupyter_code>import os
#如果参数含有默认值，一定要统一放到最后面，不能交叉放入！！！
def kuajiang(*args):#函数的传参
    print(args)
    res =  ','.join(args)
    print(res)
    os.system('say {}你们都是小邋遢'.format(res))
kuajiang('xixi','lala','haha')
def test(*args):
    print(args)
test(1,2,3,4,5,7,8,9)#元祖
def test(**kwargs):
    print(kwargs)
test(a =1,b=2,c=3)<jupyter_output>{'a': 1, 'b': 2, 'c': 3}<jupyter_text>变量的作用域- 局部变量 local- 全局变量 global- globals 函数返回一个全局变量的字典，包括所有导入的变量- locals() 函数会以字典类型返回当前位置的全部局部变量。  注意：- global ：在进行赋值操作的时候需要声明- 官方解释：This is because when you make an assignment to a variable in a scope, that variable becomes local to that scope and shadows any similarly named variable in the outer scope.- ![](../Photo/73.png)<jupyter_code>a =100
b = 100
c =100
def test2():
    global a,b,c
    a =1000
    b =1000
    c =1000
    print(a,b,c)
test2()
print(a,b,c)
globals()#输出当前脚本下的所有全局变量
locals()#输出当前脚本下的所有本地变量<jupyter_output><empty_output><jupyter_text>Homework- 1![](../Photo/74.png)<jupyter_code>def getPentagonalNumber():
    i =0
    for n in range(1,101):
            num = int((n * ( 3 * n - 1) )/ 2 )
            i += 1
            if num < 100000:
                print(num,' ',end=' ') 
                if i % 10 == 0:
                        print( )
getPentagonalNumber()<jupyter_output>1   5   12   22   35   51   70   92   117   145   
176   210   247   287   330   376   425   477   532   590   
651   715   782   852   925   1001   1080   1162   1247   1335   
1426   1520   1617   1717   1820   1926   2035   2147   2262   2380   
2501   2625   2752   2882   3015   3151   3290   3432   3577   3725   
3876   4030   4187   4347   4510   4676   4845   5017   5192   5370   
5551   5735   5922   6112   6305   6501   6700   6902   7107   7315   
7526   7740   7957   8177   8400   8626   8855   9087   9322   9560   
9801   10045   10292   10542   10795   11051   11310   11572   11837   12105   
12376   12650   12927   13207   13490   13776   14065   14357   14652   14950<jupyter_text>- 2 ![](../Photo/75.png)<jupyter_code>def sumDigits():
    sum_ = 0
    num = eval(input('请输入一个整数:'))
    while num % 10 !=0:
        sum_ += num % 10
        num = num // 10
    print('各个数字的和：'+str(sum_))
sumDigits()<jupyter_output>请输入一个整数:234
各个数字的和：9<jupyter_text>- 3![](../Photo/76.png)<jupyter_code>def displaySortedNumbers(a,b,c):
#     a,b,c = input(eval('请输入3个数：'))
    q = [a,b,c]
    q.sort()
    print (q)
displaySortedNumbers()<jupyter_output><empty_output><jupyter_text>- 4![](../Photo/77.png) - 5![](../Photo/78.png)<jupyter_code>def printChars(ch1,ch2,numberPerLine):
    i = 1
    for n in range(ord(ch1),ord(ch2)+1):
        print(chr(n),end=' ')
        i = i + 1
        if i % int(numberPerLine) == 0:
            print()
printChars(ch1='1',ch2='Z',numberPerLine='10')<jupyter_output>1 2 3 4 5 6 7 8 9 
: ; < = > ? @ A B C 
D E F <NAME> L M 
N O P Q R S T U V W 
X Y Z<jupyter_text>- 6![](../Photo/79.png)<jupyter_code>def numberOfDaysInYear():    
    for year in range(2010,2021):
        if (year%4==0) and (year%100!=0) or (year%400==0):
            print(str(year)+'年有366天')
        else:
            print(str(year)+'年有365天')
numberOfDaysInYear()<jupyter_output>2010年有365天
2011年有365天
2012年有366天
2013年有365天
2014年有365天
2015年有365天
2016年有366天
2017年有365天
2018年有365天
2019年有365天
2020年有366天<jupyter_text>- 7![](../Photo/80.png)<jupyter_code>import math
def dsitance(x1,y1,x2,y2):
    num = math.sqrt((x1-x2) ** 2 + (y1-y2) ** 2)
    print(num)
dsitance(1,2,2,2)<jupyter_output>1.0<jupyter_text>- 8![](../Photo/81.png)<jupyter_code>def sushu():
    for p in range(1,32):
        for i in range(2,p-1):
            if p % i == 0:
                break
            else:
                num = 2**(p-1)
                if num <= 31:
                    print(num)
sushu()
def sushu():
    for p in range(2,50):
        for i in range(2,p-1):
            if p % i == 0:
                break
        else:
            num = 2**p-1
            if num <= 31:
                print(p,num)
sushu()<jupyter_output>2 3
3 7
5 31
{'fraction_non_alphanumeric': 0.14935525010627745, 'fraction_numerical': 0.10046762080204052, 'mean_word_length': 2.844226579520697, 'pattern_counts': {'":': 0, '<': 50, '<?xml version=': 0, '>': 53, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '12', 'dir': 'jupyter-structured-clean-dedup', 'id': '590493', 'license': 'Apache-2.0', 'n_tokens_mistral': 3790, 'n_tokens_neox': 3487, 'n_words': 596, 'path': '9.14.ipynb', 'repo_name': 'Hlihuohuo/python', 'size': '7068'}