开始跟着视频学python,第十天mark

视频位置:151:00
本节学习函数。
当我们构建大型的复杂程序时,我们应该把代码分解成更小的可重复使用的块,即函数。如input(),print()都是内置的函数。

#先定义才能调用
def greet_user():  #小写开头,多个单词用下划线连接,
    print("hello world")
    print("welcome aboard")
 
                                # 在定义函数后要空两行
print("start")
greet_user()               #只有被调用时才执行函数里的语句。
print("Finish")

输出为:

start
hello world
welcome aboard
Finish

函数就相当于封装好的功能库。
接下来,传递信息给函数。

def greet_user(name):  #小写开头,多个单词用下划线连接,
    print(f"hello {name}")
    print("welcome aboard")

                                # 在定义函数后要空两行
print("start")
greet_user("jonh")   #如果这里没有输入,会报错
print("Finish")

输出为:

start
hello jonh
welcome aboard
Finish

两个参数。

def greet_user(first_name,last_name):  #小写开头,多个单词用下划线连接,
    print(f"hello {first_name}  {last_name}")
    print("welcome aboard")

                                # 在定义函数后要空两行
print("start")
greet_user("jonh","smith")   #如果交换位置,就成了hello  smith  jonh
print("Finish")

评论中有人提到了形参和实参,我自己觉得吧,就是上面first_name和john的区别,一个是占位的,一个是具体的。
输出结果:

start
hello jonh  smith
welcome aboard
Finish

我们也可以指定哪个对应哪个,比如

def greet_user(first_name,last_name):  #小写开头,多个单词用下划线连接,
    print(f"hello {first_name}  {last_name}")
    print("welcome aboard")

                                # 在定义函数后要空两行
print("start")
greet_user(last_name="jonh",first_name="smith")    #不能只写first_name ,不写last_name 要写两个都得写
print("Finish")

上面的好处是提高代码可读性。
接下来,让函数有返回值

def square(number):
    return  number * number

result = square(3)
print(result)

输出为:

9

然而,如果这样写:

def square(number):
    print(number * number)

result = square(3)
print(result)

输出为:

9
None

上面,计算了3*3,返回值是空。如果没有return就会这样。
小练习,将之前学的(如下)的这个程序改编成函数。
注意:input 和print都不要改到函数里,因为输入、输出的方式有很多,不要封装起来。

message = input(">")
words = message.split(' ') #将字符串分割成多个单词,分隔关键词为‘’里面的内
emojis = {
    ":)":"lalalala",
    ":(":"55555555"
}
output = ""
for word in words:
    output += emojis.get(word,word) +" "
print(output)

我的改编如下:

def translate():
    words = message.split(' ') #将字符串分割成多个单词,分隔关键词为‘’里面的内
    emojis = {
             ":)":"lalalala",
             ":(":"55555555"
    }
    output = ""
    for word in words:
        output += emojis.get(word,word) +" "
    return output


message = input(">")
print(translate())   #此处不能print(output)

输出如下:

>I am sad :)
I am sad lalalala 

我感觉上函数没有输入项怪怪,改了一下也行:

def translate(message):
    words = message.split(' ') #将字符串分割成多个单词,分隔关键词为‘’里面的内
    emojis = {
             ":)":"lalalala",
             ":(":"55555555"
    }
    output = ""
    for word in words:
        output += emojis.get(word,word) +" "
    return output


#message2 = input(">")
#print(translate(message2))    #注意这里我添了一个2,不加也行
message = input(">")
print(translate(message)) 

视频位置173:40

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章