发布于 2026-01-06 7 阅读
0

想学习 Python 吗?这里有我们免费的 4 小时互动课程!DEV 的全球展示与分享挑战赛,由 Mux 呈现:展示你的项目!

想学习 Python 吗?这里有我们提供的免费 4 小时互动课程。

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

Python 是一种流行、功能全面且易于学习的语言。它是人工智能、机器学习和数据科学领域的首选语言。有人甚至认为它是最容易入门的编程语言。

如果你觉得Python是你想学习的编程语言,那就继续往下读吧!接下来的几段,我将带你了解我们今天推出的免费4小时互动式Python课程。本课程旨在为你打下扎实的Python基础,并涵盖编程基础知识。对于想要以互动且引人入胜的方式学习编程的初学者来说,这门课程非常合适。

本课程由我们才华横溢的教师奥洛夫·保尔森 (Olof Paulson) 创建,他是瑞典可汗学院的倡导者之一。奥洛夫拥有金融背景,精通算法编写,并且热衷于开放且易于获取的教育。

现在让我们来看看课程是如何安排的!

1. 课程介绍

本课程涵盖从 Python 初学者到中级开发人员所需的所有主题,包括:

  • 输出数据和程序流程
  • 字符串、变量
  • 算术运算和比较
  • 列表、元组、集合和字典
  • 条件语句,if 和 elif
  • while 循环和 for 循环
  • 函数/返回语句
  • 对象、类和继承
  • 列表/字典推导式和 Lambda 函数
  • 模块

2. 使用 Brython 在 Scrimba 上运行 Python

为了让像 Python 这样的后端语言在像 Scrimba 这样的前端平台上运行,我们在文件中使用 Brython 插件index.html将 Python 代码重新编译成 Javascript。

通常情况下,我们会使用最小的 JSbrython.min.js版本(),但要获得更多功能,只需取消注释标准库版本(brython_stdlib.js)。

<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.8.0/brython.min.js"></script>
    <!--<script type="text/javascript"
     src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.8.0/brython_stdlib.js"></script>-->
</head>

值得注意的是,Scrimba 中也存在一些布莱顿人的怪异之处:

  1. input()框是 JS 提示符,在渲染中看不到,但在运行本地代码时会起作用。
  2. 在某些教程中,Scrimba 迷你浏览器有时会悬浮在角落里——您不必担心。

3. 打印语句和程序流程

编写 Python 代码时,我们经常需要测试代码是否按预期运行。为此,我们使用命令print()将数据输出到控制台。

print('Welcome to Python 101!')

注意:计算机从上到下读取代码,因此它会先执行靠近顶部的命令。

4. 变量

变量用于保存数据以供后续使用。我们使用小写变量名加上赋值运算符 ( =) 来声明变量。请注意,如果变量名包含多个单词,则应使用下划线 ( _) 分隔。

failed_subjects="6"

我们在代码中使用变量时,会在变量前面加上加号(+)。

print('Your son Eric is failing' + failed_subjects + ' subjects.')

5. 数据类型和类型转换

Python 的基本数据类型有:

  • 字符串——用两个引号括起来(可以是双引号或单引号)。
  • 整数= 这些是正整数。
  • 浮点数= 带小数点的数字。
  • 布尔值——取值为“truefalse”。

要了解您正在使用的数据类型,请使用type()

print(type('hello'))

注意:如果要在字符串中使用引号或撇号,请用双引号将整个字符串括起来。或者,您可以使用 Python 的转义字符,即反斜杠 ( \)。

a="it's"
b='it\'s'

混合使用数据类型是有规则的,例如,你不能在字符串中放入数字。Typecasting更改数据类型可以解决这个问题。

  • str()将数据转换为字符串。
  • int()将数据转换为整数。
  • float()将数据转换为浮点数。
print('Your son ' + name + ' is failing ' + str(failed_subjects) + ' subjects.')

6. 变量和数据类型 - 练习

是时候迎接你的第一个 Scrimba Python 挑战了!在这个挑战中,你可以运用新学的变量和数据类型知识来检验你的理解。尝试自己解决这个挑战,然后看看 Olof 的解答,看看你的思路是否正确。

7. 算术运算

在这里,我们了解到 Python 中的基本算术运算包括加法、减法、乘法、浮点数除法(返回一个浮点数)、向下取整除法(将结果向下舍入到最接近的整数)、取模(返回计算的余数)和指数运算(将一个数乘以另一个数的幂)。

a=10
b=3
print('Addition : ', a + b)
print('Subtraction : ', a - b)
print('Multiplication : ', a * b)
print('Division (float) : ', a / b)
print('Division (floor) : ', a // b)
print('Modulus : ', a % b)
print('Exponent : ', a ** b)

8. 字符串 - 基础知识 / 切片

在本集中,我们将学习一些关于使用字符串的基本概念。

  • 字符串相乘允许我们将同一个字符串多次打印出来。有三种方法可以实现这一点(最后一种方法会在字符串之间插入空格):
print(msg+msg)
print(msg*2)
print(msg,msg)

我们可以通过多种方式改变字符串的大小写:

  • upper()将字符串转换为大写。
  • lower()将字符串转换为小写。
  • capitalize()将字符串的第一个单词首字母大写。
  • title()将字符串中的每个单词首字母大写。
print(msg.upper())
print(msg.lower())
print(msg.capitalize())
print(msg.title())

我们可以使用以下函数来查找有关字符串的信息:

  • print(len(msg))告诉我们字符串有多少个字符(在本例中为msg.
  • print(msg.count('Python'))统计单词或字母出现的次数 - 请注意区分大小写。

我们用方括号 ( []) 访问字符串。

print(msg[0])

注意: Python 字符串的索引从 0 开始,也就是说,第一个字符被计为 0 而不是 1。使用负索引会从字符串的末尾开始计数。

返回字符串的片段称为切片。Olof 通过一些示例向我们展示了如何进行切片:

  • print(msg[a:])返回指定位置字符之后的所有内容。
  • print(msg[a:b])返回指定位置之间的所有内容,不包括结束位置。
  • print(msg[:b])返回指定位置之前的所有内容,但不包括结束位置。

9. 练习 - 弦乐 - 基础/切片

是时候练习弦乐了。除了让我们练习之前演出中学到的技巧外,这项挑战还能让我们思考奥洛夫没有明确告诉我们的一项技能:

Python 101 范围
点击图片即可参与挑战。

这是了解真正程序员生活的绝佳入门指南——别忘了谷歌是你的好朋友!看看其他演员是如何做到的吧。

10. 字符串-2 查找/替换、字符串格式化

这个角色让我们对弦乐的使用有了更深入的了解。

  • 我们可以使用三引号创建多行字符串:
msg="""Dear Terry,,
You must cut down the mightiest
tree in the forest with…
a herring! <3"""

Olof 为我们演示了一些处理字符串的例子:

  • print(msg.find('Python'))返回我们搜索的单词或字符的位置(在本例中为“Python”)。

  • print(msg.replace('Python','Java'))允许我们替换字符串中的单词或字符。请注意,Python 中的字符串是不可变的,因此要使用此函数的结果,需要将其保存到一个变量中。

msg1=msg.replace('Python','C')
  • print('Python' in msg)true通过返回 true或 false来告诉我们字符串中是否存在某个单词或字符false

  • msg1 = f'[{name}] loves the color {color}!'允许我们格式化字符串,使其更易于阅读。

11. 用户输入

在Python中,我们获取用户输入并像这样打印它:

name= input('What is your name?: ')
print(name)

这将弹出一个用户输入框,如下所示:

Python中的用户输入字段

12. 用户输入 - 练习

是时候通过用户输入练习来锻炼我们的编程技能了!在本期节目中,你将根据以下提示构建一个距离转换器:

用户输入挑战提示
点击图片即可参与挑战。

和往常一样,先自己尝试解答一下,然后再查看Olof 的解答,看看你是否做对了。

13. 列表 - 基础知识

变量保存一条数据,而列表保存多条数据。

friends = ['John','Michael','Terry','Eric','Graham']

列表也从零开始索引,并且可以像字符串一样用方括号访问:

print(friends[1])

我们还可以使用与处理字符串相同的命令来查找字符串的长度、查找字符串中的特定数据等等。

print(friends[1],friends[4])
print(len(friends))
print(friends.coun('Eric'))

14. 列表(续)

本教程将带我们了解使用列表的一些基本技能,例如排序(sort())、求和(print(sum())、追加新数据(append(''))、将两个列表相加(.extend())、删除项目(.remove(''))、弹出项目(删除一个项目但仍允许返回它)(.pop())和清除列表(.clear())。

15. 列表练习

在这个练习中,我们将尝试操作列表。

挑战描述
点击图片查看解决方案。

先自己尝试一下,然后再查看 Olof 的解决方案,看看结果如何。

16. 拆分和合并

本演示探讨了如何分割和连接弦的各个部分。

print(msg.split())
print('-'.join(friends_list))

17. 分裂与合并 - 练习

在这里,你将运用你现在所了解的关于拆分和合并的知识,从字符串中创建一个朋友列表。

像往常一样,先自己尝试解答,然后再查看 Olof 的解答来检验你的答案。

18. 元组

元组是不可更改的列表。它们看起来与列表相同,但用圆括号而不是方括号括起来。

friends_tuple = ('John','Michael','Terry','Eric','Graham')

当你想确保数据在程序运行过程中不会发生变化时,应该使用元组而不是列表。

19. 套装

集合类似于列表和元组,但它是无序的,并且可以移除自身内部的重复元素。此外,集合的运算速度非常快。集合用花括号括起来。

friends_set = {'John','Michael','Terry','Eric','Graham','Eric'}

在本期节目中,Olof 将带我们了解一些使用列表的技巧和窍门。注意:创建空集与创建空列表或空元组的方式不同:

#empty Lists
empty_list = []
empyt_list = list()

#empty Tuple
empty_tuple = ()
empty_tuple = tuple()

#empty Set
empty_set = {} # this is wrong, this is a dictionary
empty_set = set()

20. 组数-练习

接下来,我们将运用新学的集合知识进行检验。请查看表达式的末尾以核对答案。

21. 评论

注释是 Python 代码中会被忽略的文本。它们主要用于人与人之间的交流,例如代码注释、调试或测试以及代码文档。注释以井号 ( ##) 开头:

#Hiding in the comments

22. 函数 - 调用、参数、实参、默认值

在本期节目中,奥洛夫向我们介绍了函数——我们可以在以后重用的代码包。

def函数是通过函数名加上括号来创建(定义)和调用的()

def greeting():
    print("Hello Friend!")

greeting()

我们还会再次研究格式化字符串,以及如何使用它们使代码更易读、更高效。

def greeting(name,age=28):
    print("Hello " + name + ", you are " + str(age) + "!")
    print(f"Hello {name}, you are {age}!")

23. 函数 - 练习

在这里,奥洛夫给我们布置的任务是修改和扩展现有函数的功能。不妨试一试,然后看看其他演员的演示,看看你的思路是否正确。

24. 函数 - 命名表示法

命名表示法是指在调用函数时给参数命名,以便函数定义能够理解哪个参数是哪个,即使它们以不同的顺序出现。

Profile(yob=1995,weight=83.5,height=192,eye_color="blue")

25. 退货声明

本节将介绍 return 语句。return 语句允许我们在执行函数后获取数据。

def value_added_tax(amount):
    tax = amount * 0.25
    return tax

Olof 还向我们介绍了一些使用返回数据进行操作的便捷方法,包括用它创建字符串、集合和元组。

26. 比较和布尔运算

本教程快速浏览了一些比较数据的方法,包括等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于( <=)、在(in)、不在(not in)、是(is)和不是(is not)。

我们还会了解一些布尔属性,并了解到false`false` 的值为 0,true`1` 的值为 1。空对象和零的值为 false,其他所有值(字符串、除 0 以外的数字等)的值为 true。

27. 条件语句:If、Else、Elif

条件语句允许我们根据不同的情况运行不同的代码。if如果函数返回 true,则执行语句;elif如果函数在另一个语句返回 false 之后返回 true,则执行 (else if) 语句;else如果前面的语句都没有返回 true,即在所有其他情况下,则执行语句。

is_raining = False
is_cold = False
print("Good Morning")
if is_raining and is_cold:
    print("Bring Umbrella and jacket")
elif is_raining and not(is_cold):
    print("Bring Umbrella")
elif not(is_raining) and is_cold:
    print("Bring Jacket")
else:
    print("Shirt is fine!")

28. If/Elif/Else - 练习

是时候通过练习来锻炼我们的体能了。我们还能借此机会体验一下温度转换器的扩展功能。

和往常一样,请尝试自己解决这道题,然后将你的答案与Olof 的解答进行比较。

29. 条件句 - 练习提高

这次演示让我们有机会尝试一些优化方法,例如缩短代码和减少条件语句的数量。有很多不同的方法可以实现这一点,所以不妨自己尝试一下,然后将你的答案与 Olof 在演示最后给出的解决方案进行比较。

30. While 循环

while 循环是一种会重复执行直到满足特定条件才停止的代码。要创建循环,首先要问自己以下问题:

  1. 我想重复什么?

  2. 我每次想改变什么?

  3. 应该重复多久?

在下面的例子中,我们希望重复加一的操作,我们希望改变数字,i并且我们希望这个过程重复进行,直到达到数字五:

i=0
while i < 5:
    i+=1
    print(f"{i}."+ "*"*i + "Loops are awesome" + "*"*i)

31. While 循环 - 练习

是时候练习循环了。在这个挑战中,我们将制作一个有趣的猜谜游戏。开始之前,别忘了回顾上一章中关于循环的三个问题,然后在最后查看答案,看看你的答案是否正确。

32. for 循环和嵌套

for 循环允许我们对字符串、列表、元组或集合中的每个元素执行语句。例如,以下代码会打印出 2 到 8 之间的所有数字:

for number in range(2,8):
    print(number)

也可以在循环中嵌套循环。下面的代码会为每个朋友打印出数字 1、2 和 3(John 1、John 2、John 3、Terry 1、Terry 2、Terry 3 等)。

friends = ['John','Terry','Eric']
for friend in friends:
    for number in [1,2,3]:
        print(friend, number)

在本期节目中,我们还学习了一些方便的 for 循环关键字,例如breakcontinue

33. for 循环 - 练习

是时候通过练习来检验我们所学的关于 for 循环的知识了。这次,我们将制作个性化的派对邀请函。我们还有一个小挑战:正确使用大小写。

for循环练习说明
点击图片即可参与挑战。

和往常一样,先自己尝试解答,然后再对照答案进行比较。

34. 字典

本期节目将向我们介绍字典。字典在 Python 中用于存储键值对,其工作方式与实体字典类似。您可以查找一个单词(键),并获得其定义或翻译(值)。

movie = {
    'title' : 'Life of Brian',
    'year' : 1979,
    'cast' : ['John','Eric','Michael','George','Terry']
}

Olof 还向我们讲解了如何更改字典中的条目和添加新条目,以及如何处理用户查找不存在的条目时产生的错误消息,以及如何对字典数据运行 for 循环。

for key, value in movie.items():
    print(key, value)

35. Sort() 和 Sorted()

sort()在这里,我们将了解`sort` 和 `sort`之间的区别sorted()。虽然这两个函数都会对列表内容进行排序,但 `sort` 只sorted()返回结果。

我们还会观察字典、元组和字符串在排序时的行为,并简要介绍lambda 函数——一种方便的单行一次性函数,我们将在后续教程中详细介绍。下面的 lambda 示例根据列表的前几个条目对列表进行排序:

my_list=[['car',4,65],['dog',2,30],['add',3,10],['bee',1,24]]
print(sorted(my_list, key = lambda item :item[0]))

36. 异常处理:Try/Except、Raise

在本期节目中,Olof 将为我们讲解一些处理错误的技巧。我们使用try-except代码块来实现这一点,代码块如下所示:

#try:
    #code you want to run
#except:
    #executed if error occurs
#else:
    #executed if no error
#finally:
    #always executed

37. 类和对象

接下来,奥洛夫向我们讲解了类和对象。要理解类,需要掌握四个主要概念:类、对象、属性和方法。

类是蓝图,它向我们展示了所需数据的结构。对象包含我们使用的实际数据。属性是类中的变量,方法是类中的函数。

我们使用初始化语句初始化一个类init

class Movie:
    def __init__(self,title,year,imdb_score,have_seen):
        self.title = title
        self.year = year
        self.imdb_score = imdb_score
        self.have_seen = have_seen

注意:按照惯例,我们在命名属性时使用self关键字。

完成上述步骤后,我们现在可以创建该类的实例,如下所示:

film_1 = Movie("Life of Brian",1979,8.1,True)
film_2 = Movie("The Holy Grail",1975,8.2,True)

方法在类中定义如下:

    def nice_print(self):
        print("Title: ", self.title)
        print("Year of production: ", self.year)

调用方法有两种方式(输出结果相同):

film_2.nice_print()
Movie.nice_print(film_2)

38. 继承

在本期节目中,奥洛夫向我们讲解了继承的概念。继承允许我们在一个类中使用另一个类的方法,而无需重复编写所有代码。之后,我们还可以添加更多方法来区分不同的类。

class Person:
    def move(self):
        print("Moves 4 paces")
    def rest(self):
        print("Gains 4 health points")
class Doctor(Person):
    def heal(self):
        print("Heals 10 health points")

一个类可以继承自多个其他类。如果这些类对同一个方法有不同的输出,则该类会选择先声明的继承方法。在下面的示例中,Wizard 类会继承 Doctor 类的所有共享方法,而不是 Fighter 类的。

class Wizard(Doctor,Fighter):
    def cast_spell(self):
        print("Turns invisble")
    def heal(self):
        print("Heals 15 health points")

39. 模块

现在是时候了解模块了。模块是代码片段,你可以导入并在代码中使用它们。Python 提供了一些常用的模块,例如 `modules`、`modules` datetimerandom` modules` stringos`modules`mathbrowser`modules` 。platform

要使用模块,我们首先需要导入 Brython 的标准库版本:

<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.7.0/brython.min.js"></script>
    <script
        type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.7.0/brython_stdlib.js"
    ></script>
    -->
</head>

模块使用关键字导入import,并可使用以下方式为其指定一个更易于使用的别名as

import platform as pl

print(pl.python_version())

40. 压缩/解压缩

在本期节目中,Olof 向我们展示了如何对对象进行压缩和解压缩。压缩操作允许我们将两个或多个可迭代对象(字符串、元组、列表等)组合在一起。

nums = [1,2,3,4]
letters = ['a','b','c','d']
combo = list(zip(nums,letters))
print(combo)

上面的例子将合并后的可迭代对象转换为列表,但我们也可以将其转换为元组、集合或字典。注意:当合并两个以上的对象时,字典并不适用。

解压缩允许我们将结果分配到单独的变量中,在本例中numletnam

num,let,nam =zip(*combo)

41 Lambda 函数(第一部分)

接下来,我们将深入探讨 lambda 表达式,也称为匿名函数。它允许你编写单行、一次性的函数定义,这些函数可能只使用一次。请比较以下示例:

标准功能:

def square(x):
    return x*x
print(square(3))

Lambda:

square1 = lambda x: x*x

注意: lambda 函数的返回值是隐式的。

42. Lambda 函数(第二部分)

在本期节目中,我们将更深入地探讨 lambda 表达式。虽然我们总能用标准函数实现 lambda 表达式的功能,但在某些情况下,lambda 表达式的性能要好得多。

在这个例子中,lambda 函数的返回值是一个函数,这使得我们可以将该 lambda 函数复用于多个不同的任务。在下面的代码中,我们使用同一个 lambda 函数分别乘以 2 和 5:

def func(n):
    return lambda a: a*n
# a*2
doubler = func(2)
print(doubler(3))
quintipler = func(5)
print(quintipler(3))
print(type(func(3)))

该演员还解释说,我们可以在创建 lambda 函数后立即调用它们。

print((lambda a,b,c: a+b+c)(2,3,4))

43 λ 函数 - 练习

现在是时候练习创建我们自己的 lambda 函数了。

看看你的进展如何,并随时对照Olof 的解答检查你的答案。

44. 阅读理解 - 列表

Python 列表推导式允许我们用更少的代码创建列表、元组、集合和字典。注意:任何可以用列表推导式创建的对象都可以用 for 循环创建,但是 for 循环需要更多的代码。

Olof 还提供了一张方便的幻灯片,以直观的方式比较了 for 循环和列表推导式在两种不同情况下的表现。

for 循环和列表推导式的比较
点击幻灯片即可查看演员表。

45. 阅读理解 - 词典

Olof 现在向我们展示如何使用列表推导式创建一个新字典。如果使用 for 循环,代码将如下所示:

new_dict = dict()
for movie, yr in zip(movies,year):
    new_dict[movie] = yr
print(new_dict)

对比之下,结果如下:

new_dict = {movie:yr for movie,yr in zip(movies,year)}
print(new_dict)

更加简洁易读!

46. 随机性

本教程将带我们了解该random模块,并教我们如何生成伪随机事件。要使用该模块,我们首先需要导入它:

import random

然后我们可以使用该模块生成伪随机数:

for i in range(5):
    print(random.random()*6)

Olof 还向我们展示了我们可以与 . 一起使用的各种功能random

不过,`is`的用法random并不局限于数字。我们也可以将其用于可迭代对象:

friends_list =  ['John', 'Eric', 'Michael', 'Terry', 'Graham']
print(random.choice(friends_list))

最后,奥洛夫向我们展示了各个string模块,我们学习了如何生成伪随机词。

import random, string

smallcaps = 'abcdefghijklmnopqrstuvwxyz'
largecaps = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits = '0123456789'
letters_numbers = string.ascii_letters + string.digits
word = ''
for i in range(7):
    word += random.choice(letters_numbers)
word1 = ''.join(random.sample(letters_numbers,7))
word = random.choices(letter_numbers, k=7)
print(word)
print(word1)

注意:这些词语并非真正随机生成,因此不应用于生成密码。

47. 项目 - 密码机

课程即将结束,奥洛夫给我们布置了一个大项目,让我们好好挑战一下。请仔细阅读说明,按照步骤尝试独立完成,然后再查看奥洛夫的解答

48. 项目 - 数学辅导

我们的第二个项目是创建一个数学辅导程序,用来辅导我们背乘法表。请查看下面的说明,尝试一下这个项目,然后看看奥洛夫是怎么做的

数学辅导项目说明
点击图片即可参与挑战。

49. 课程总结

恭喜你顺利完成 Python 101 课程!我们学习了数据输出和程序流程、字符串、变量、算术运算、比较、列表、元组、集合、字典、条件语句、循环语句、函数、对象、类、继承、列表推导式、lambda 表达式和模块——你应该为自己感到骄傲!

恭喜!

别忘了,如果需要,你可以随时回顾课程内容,或者重做任何你不确定(或者特别喜欢!)的练习。

当您准备好继续学习时,Scrimba提供一系列课程来教您下一个编程技能,快去看看吧!

去拿吧
点击图片查看Scrimba提供的课程系列。

祝您编程愉快!:)

文章来源:https://dev.to/scrimba/want-to-learn-python-here-s-our-free-4-hour-interactive-course-496f