<jupyter_start><jupyter_text>函数- 函数可以用来定义可重复代码，组织和简化- 一般来说一个函数在实际开发中为一个小功能- 一个类为一个大功能- 同样函数的长度不要超过一屏  定义一个函数def function_name(list of parameters):        do something![](../Photo/69.png)- 以前使用的random 或者range 或者print.. 其实都是函数或者类<jupyter_code>def fun_name():
    print('xxx')
fun_name()#()代表函数调用
'''判断奇偶数，调用函数'''
def num_jo():
    i = eval(input('输入一个数:'))
    if i%2==0:
        print('偶数')
    else:
        print('奇数')
num_jo()
def sushu():
    num = eval(input(''))
    for j in range(2,num-1):
        if num % j == 0:
            print(str(num)+'不是素数')
            break
        elif num==0:
            print(str(num)+'不是素数')
            break
    else:
        print(str(num)+'是素数')
sushu()
def fun1():
    num_ = eval(input(''))
    return num_<jupyter_output><empty_output><jupyter_text>调用一个函数- functionName()- "()" 就代表调用 ![](../Photo/70.png)  带返回值和不带返回值的函数- return 返回的内容- return 返回多个值- 一般情况下，在多个函数协同完成一个功能的时候，那么将会有返回值 ![](../Photo/71.png)- 当然也可以自定义返回None  EP：![](../Photo/72.png)  类型和关键字参数- 普通参数- 多个参数- 默认值参数- 不定长参数<jupyter_code>import os
def n(name): #函数的传参
    os.system('say {}xxx'.format(name))
# n('mm') #位置参数  不带参数名传递方式
n(name = 'mm') #带参数名传递方式
def y(x):
    return x**2
y1= y(100)
print(y1)
def san(num):
    return num**3
def er(num):
    return num**2

def input_():
    num = eval(input(''))
    res3 = san(num)
    res2 = er(num)
    print(res3-res2)
input_()<jupyter_output>2
4<jupyter_text>普通参数  多个参数<jupyter_code>import os
def n(name1,name2,name3): #函数的传参
    os.system('say {}{}{}xxx'.format(name1,name2,name3))
n(name1='z',name2='x',name3='c')<jupyter_output><empty_output><jupyter_text>默认值参数<jupyter_code>import os
def n(name1,name2,name3='c'): #如果含默认值，统一放到最后面
    os.system('say {}{}{}xxx'.format(name1,name2,name3))
n(name1='z',name2='x')
import pandas as pd #默认参数传递方式
pd.read_csv
# 用户七天免登陆，用户名和密码
account = '<EMAIL>'
password = '<PASSWORD>'
is_ok_and_y = False
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 qt():
    global is_ok_and_y
    if is_ok_and_y== False:
#         print('是否')
        res = input('是否7天免登陆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('登录成功')
qt()<jupyter_output>是否
是否7天免登陆y/ny
输入用户名：<EMAIL>
输入密码：<PASSWORD>
登录成功<jupyter_text>强制命名<jupyter_code>import os
def n(*,name1,name2,name3='c'): #   *,代表强制命名，必须带参数名传递方式
    os.system('say {}{}{}xxx'.format(name1,name2,name3))
n(name1='z',name2='x')<jupyter_output><empty_output><jupyter_text>不定长参数- \*args> - 不定长，来多少装多少，不装也是可以的  - 返回的数据类型是元组  - args 名字是可以修改的，只是我们约定俗成的是args- \**kwargs > - 返回的字典  - 输入的一定要是表达式（键值对）- name,\*args,name2,\**kwargs  使用参数名<jupyter_code>def test(*args):
    print(args)
test(1,2,3,6,7,8,9) #元组
def t(**kwargs):
    print(kwargs)
t(a=1,b=2,c=3)#返回的为字典
import os
def n(*args): 
    res = ','.join()
    print(res)
    os.system('say {}xxx'.format(res))
n('z','x')
import os
def ns(**kwargs): #   *,代表强制命名，必须带参数名传递方式
    print(kwargs)
    res = ''
    for keys,items in kwargs.items:
        res = res +items +','
        print(res)
    os.system('say {}xxx'.format(res))
ns(a='z',b='x')<jupyter_output>{'a': 'z', 'b': 'x'}<jupyter_text>变量的作用域- 局部变量 local- 全局变量 global- globals 函数返回一个全局变量的字典，包括所有导入的变量- locals() 函数会以字典类型返回当前位置的全部局部变量。<jupyter_code>a= 100
b = 100
def mm():
    global a,b
    a=101
    b=102
    print(a,b)
mm()
print(a,b)
globals()#当前脚本下所有的全局变量
locals()#当前脚本下所有局部变量<jupyter_output><empty_output><jupyter_text>注意：- 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)  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 dsiplaySortedNumbers(a,b,c):
    q = [a,b,c]
    q.sort()
    print(q)
dsiplaySortedNumbers(3,2.4,5)<jupyter_output>[2.4, 3, 5]<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 G H I J K 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.15698252592697826, 'fraction_numerical': 0.09845148458587867, 'mean_word_length': 2.7992444684295736, 'pattern_counts': {'":': 0, '<': 57, '<?xml version=': 0, '>': 56, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 5, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '14', 'dir': 'jupyter-structured-clean-dedup', 'id': '560505', 'license': 'Apache-2.0', 'n_tokens_mistral': 3636, 'n_tokens_neox': 3348, 'n_words': 589, 'path': '9.14.ipynb', 'repo_name': 'yuchunjie39/text', 'size': '7045'}