桐木舟学英语人工智能

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 64|回复: 2

学Python从【控制结构】开始学习,包括条件判断、循环和列表推导式

[复制链接]

7

主题

4

回帖

41

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41
发表于 2024-10-10 15:33:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我们从 控制结构 开始学习,包括条件判断、循环和列表推导式。让我们逐一进行讲解并附上代码示例。
1. 条件判断(if-else)if-else 语句根据条件的真假执行不同的代码块。基本结构如下:
python

if condition:   
     # 当 condition 为 True 时执行这部分代码   
     print("Condition is True")
else:   
     # 当 condition 为 False 时执行这部分代码   
     print("Condition is False")

示例:

python

x = 10
if x > 5:   
     print("x is greater than 5")
else:   
     print("x is less than or equal to 5")

其他形式:
  • if-elif-else:可以有多个条件判断。
python

x = 15
if x < 10:   
     print("x is less than 10")
elif x == 10:   
     print("x is equal to 10")
else:   
     print("x is greater than 10")

2. 循环结构
For 循环

for 循环用于遍历一个序列(如列表、字符串或元组)。基本结构如下:
python

for item in sequence:   
      # 对于序列中的每个 item,执行这部分代码   
      print(item)

示例:

python

numbers = [1, 2, 3, 4, 5]
for num in numbers:   
      print(num)

While 循环

while 循环根据一个条件来重复执行某块代码,直到条件为 False。
python

while condition:   
     # 当 condition 为 True 时执行   
     print("Looping")

示例:python

count = 0
while count < 5:   
      print("Count is:", count)   
      count += 1  # 每次循环后 count 增加 1

3. 列表推导式(List Comprehensions)

列表推导式是一种简洁的方式来创建和操作列表。它的语法类似于 for 循环,但更加简洁。
python

new_list = [expression for item in iterable if condition]

示例:生成一个包含1到10之间所有偶数的列表:
python

even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)

上面的代码等价于:
python

even_numbers = []
for x in range(1, 11):   
     if x % 2 == 0:        
         even_numbers.append(x)print(even_numbers)


小练习:
  • 创建一个变量 age,使用 if-elif-else 结构根据 age 的值打印不同的消息(如 "Child"、"Teenager"、"Adult")。
  • 使用 for 循环遍历一个列表,并打印列表中的每个元素。
  • 使用 while 循环,从 1 打印到 5。
  • 使用列表推导式生成一个从 1 到 10 的平方数列表。

回复

使用道具 举报

7

主题

4

回帖

41

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41
 楼主| 发表于 2024-10-10 15:51:11 | 显示全部楼层

通过 if-else 结构判断 x 的值,并根据条件输出不同的结果 规范Python文件的命名

学生反馈
当我在VS code里面,输入:
x = 10
if x > 5:
    print("x is greater than 5")
else:
    print("x is less than or equal to 5")

再点击运行,得到下面的结果 TERMINAL
PS C:\Users\Administrator> & C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/Administrator/x = 10 if x greater than
5.py"
x is greater than 5
PS C:\Users\Administrator>

我的操作是正确的吗? 我做这个练习,是为了达到什么目的?为什么这些结果体现出我的电脑C盘里的结果?

老师解答
你已经正确运行了Python代码,输出也显示为 "x is greater than 5",这是代码执行成功的标志!
你为什么会看到这些结果?
  • PS C:\Users\Administrator... 是终端在显示当前执行的命令。这一行表示你的VS Code在运行一个Python脚本(文件名可能是 x = 10 if x greater than 5.py,这个文件保存在你电脑的C盘下的某个路径)。
  • 执行目的:你运行这段代码的目的是通过 if-else 结构判断 x 的值,并根据条件输出不同的结果。在这段代码中,x = 10 大于 5,因此输出 "x is greater than 5",表明代码逻辑是正确的。
  • 为什么会显示C盘的路径:VS Code 在执行 Python 文件时会显示你文件的具体路径。在这个例子中,你的文件保存在 C:/Users/Administrator 下,所以终端显示这个路径。这是系统在告诉你脚本从哪里被运行,不用担心这部分内容,它只是告诉你文件的位置和解释器的路径。

关于文件名的问题
你保存的文件名似乎有点问题,因为它包含了空格和不标准的字符(= 和 >)。在Windows系统中,文件名尽量避免使用这些字符,因为它们可能引起运行时的误解。
建议:
  • 保存文件时,使用更规范的命名,例如:if_else_example.py,不要包含空格和特殊字符。
  • 文件名最好简短且能反映文件的内容,方便你以后回顾和管理。
练习的目的:
  • 了解 if-else 条件判断:你通过这个练习掌握了如何使用 if 语句来判断条件,并根据不同的条件输出不同的结果。
  • 学习在VS Code中运行Python代码:你也通过这个练习熟悉了如何在VS Code中编写、保存、并运行Python脚本。
下一步建议:如果你已经熟悉了 if-else 结构,可以继续尝试更多的练习,比如使用 elif 添加多个条件,或者结合 for 循环和 if-else 来完成更复杂的逻辑。


回复

使用道具 举报

7

主题

4

回帖

41

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41
 楼主| 发表于 2024-10-11 15:49:21 | 显示全部楼层

列表推导式 List Comprehensions 查询创建列表 两个例子 iterable(可迭代对象)

列表推导式是一种简洁的方式来创建和操作列表。
new_list = [expression for item in iterable if condition]

高亮写法:

new_list = [expression for item in iterable if condition]


列表推导式(List Comprehensions) 来查询值,创建列表。

【**】上面学习了在整数之间查询特定的值——除以2的整数,我们再来做练习。
练习一:
使用列表推导式,查找5到26之间被3整除的数字。
VS Code里面代码书写如下:

# divisible_by_3
# 使用列表推导式,查找5到26之间被3整除的数字
divisible_by_3 = [num for num in range(5,27) if num % 3] == 0


# 打印结果
print("在5到26之间能被3整除的数字:", divisible_by_3)

结果为:
C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe c:/Users/Administrator/divisible_by_3.py在5到26之间能被3整除的数字: [6, 9, 12, 15, 18, 21, 24]
说明运行成功。

练习二:
【**】利用这个列表推导式(List Comprehensions),我们来做一个有点挑战性的题目。在复杂的文字环境下测试创建列表。
考虑到阿拉伯语字母,写在不同的位置,比如中间,结尾,开头,字母的写法变化了。
现在来推导出,四个阿拉伯语单词里,含有一个共同的字母吗?

在VS code里输入,并且运行。
# 定义阿拉伯语单词列表
arabic_words = ['مكتب', 'كلمة', 'كتاب', 'حمار']

# 查找含有字母 'م' 的单词
common_letter = 'م'
words_with_common_letter = [word for word in arabic_words if common_letter in word]

# 打印结果
print("含有字母 'م' 的单词:", words_with_common_letter)

在VS code里云心这个结果是:

C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe c:/Users/Administrator/arabic_words.py
含有字母 'م' 的单词: ['مكتب', 'كلمة', 'حمار']

检查下,四个阿拉伯语单词,还真的是只有三个单词里有字母'م',说明有一个是不匹配的。
那么,我们再看看四个单词:
正确的单词及其含义:
  • مكتب (maktab 书桌) - 以 م 开头。
  • كلمة (kalima 词) - 中间含有 م
  • حمار (himar  驴) - 中间含有 م
  • كتاب (kitab 书) - 以 ب 结尾,单词里没有字母 م

尽管Python初学,能做到这些,也是很有意思吧?下面的内容,加大了难度,不要急,慢慢看。

如果我们进一步想要展示字母 م 在每个单词中的不同形式,我们可以定义一个字典,将字母的不同形式与单词关联起来。
在上面的代码基础上,我们接着写:

# 定义字母的不同形式
letter_forms = {
    'beginning': 'مـ',
    'middle': 'ـمـ',
    'end': 'ـم'
}

# 创建一个结果列表,显示字母在每个单词中的形式
results = [
    (word, letter_forms['beginning'] if word.startswith(common_letter) else
           letter_forms['middle'] if common_letter in word[1:-1] else
           letter_forms['end'])
    for word in words_with_common_letter
]

# 打印每个单词和对应的字母形式
for word, form in results:
    print(f"单词: {word},字母形式: {form}")

这样,输入的结果是:

C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe c:/Users/Administrator/letter_forms.py
含有字母 'م' 的单词: ['مكتب', 'كلمة', 'حمار']
单词: مكتب,字母形式: مـ
单词: كلمة,字母形式: ـمـ
单词: حمار,字母形式: ـمـ

总结
  • 使用列表推导式可以简洁地找出包含特定字母的单词。
  • 通过条件判断,可以进一步分析字母在单词中的不同位置和形式。
你可以根据这个思路尝试编写代码。


Python基础知识 注解:
在Python中,iterable(可迭代对象)是指任何可以被遍历(iterated)的对象。这包括:
  • 列表(lists)
  • 元组(tuples)
  • 字符串(strings)
  • 字典(dictionaries)
  • 集合(sets)
  • 生成器(generators)
可迭代对象的特点:
  • 遍历:可迭代对象可以通过循环(如 for 循环)逐个访问其元素。
  • 使用场景:在列表推导式中,iterable 是指你希望通过条件筛选或转换生成新列表的对象。

示例

假设你有一个列表,可以用它作为可迭代对象:

numbers = [1, 2, 3, 4, 5]

# 使用列表推导式生成一个新列表,包含原列表中的每个数字的平方
squared_numbers = [num ** 2 for num in
numbers]

print(squared_numbers)  # 输出: [1, 4, 9, 16, 25]

在这个例子中,numbers 是一个可迭代对象,num 是遍历 numbers 中的每个元素。

用日常用语来说,iterable(可迭代对象)就是指当前可以被操作或遍历的所有对象。
更简单的说法:可迭代对象就是任何你可以逐个访问其元素的东西。例如:
一个列表中的数字
一串字符中的字母
一组字典中的键值对
总结来说,在编程中,当我们说一个对象是可迭代的,意思就是我们可以: 用循环或者其他方法去“取出”这个对象里面的元素



总结

在列表推导式 new_list = [expression for item in iterable if condition] 中,iterable 代表你要遍历的对象,item 是当前遍历到的元素。通过使用条件,可以在生成新列表时筛选出符合特定条件的元素。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|桐木舟论坛

GMT+8, 2024-10-23 16:18 , Processed in 0.038540 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表