【开发者空间实践指导】Python第三课:时光飞逝

举报
开发者空间小蜜蜂 发表于 2024/12/26 16:07:42 2024/12/26
1.9k+ 0 0
【摘要】 本实验旨在利用Python编程语言实现一个简单的倒计时计时器,该工具可以在设定的时间结束后发出提醒。通过这个实验,开发者将学习如何使用Python的基本语法和库来创建一个实用的倒计时工具。

一、案例介绍

Python是一种面向对象的解释性计算机程序的设计语言,是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python具有脚本语言中丰富和强大的类库,足以支撑绝大多数日常应用。

Python是当前非常热门的程序语言,拥有超高的人气。随着大数据分析的火热,以及人工智能的兴起,Python已经成为非常受欢迎的程序设计语言之一。

本实验旨在利用Python编程语言实现一个简单的倒计时计时器,该工具可以在设定的时间结束后发出提醒。通过这个实验,开发者将学习如何使用Python的基本语法和库来创建一个实用的倒计时工具。

二、免费领取云主机

如您还没有云主机,可点击链接 ,根据领取指南进行操作。

如您已领取云主机,可直接开始实验。

三、实验资源

资源名称

规格

单价(元)

时长(分钟)

云主机

2vCPUs | 4GB RAM

免费

40

CodeArts IDE

CodeArts IDE for Python

免费

40

计:0

四、Python进阶列表推导式

4.1 列表推导式

列表推导式是Python中一种简洁的创建列表的方法。它允许使用者在一行代码中构建列表,并且通常比传统的循环构造列表的方式更加直观和易读。

列表推导式通常由以下部分组成:

  1.  一个输入序列(或多个输入序列);
  2. 一个包含for循环的输出表达式;
  3. 可选的if条件。

列表推导式的基本语法如下:

[输出表达式 for 变量 in 输入序列 if 条件表达式]

详细介绍:

  1. 输出表达式:通常是关于输入序列中每个元素的函数或操作;
  2. 输入序列:可以是任何可迭代的对象,如列表、元组、字符串等;
  3. if条件表达式:用于筛选输入序列中的元素,只有满足条件的元素才会被包含在新的列表中。

4.2 列表推导式示例

4.2.1 示例一:简单的列表推导式

生成一个列表,包含0到9每个数字的平方。

list_number = [x**2 for x in range(10)]
print(list_number)   #输出[0、1、4、9、16、25、36、49、64、81]

解释:

range(10):生成一个包含0到9的序列;

x**2:输出表达式,它计算每个元素的平方;

for x in range(10): 循环,将range(10)中每个元素赋值给变量x。

4.2.2 示例二:带条件筛选的列表推导式

生成一个列表推导式,包含0到9中的偶数平方。

list_two = [x**2 for x in range(10) if x % 2 == 0]
print(list_two)  #输出:[0,4,16,36,64]

解释:

range(10):生成一个包含0到9的序列;

x**2:是输出表达式,计算每个元素的平方;

if x % 2 == 0:条件表达式,它只允许偶数通过筛选;

for x in range(10):循环,遍历range(10)中的每个元素。

4.2.3 示例三:嵌套列表推导式

生成一个列表,包含两个列表中所有对应位置元素的和。

list1 = [1,2,3]
list2 = [4,5,6]
sum_list = [x + y for x in list1 for y in list2]
print(sum_list)  #	输出:[5,6,7,6,7,8,7,8,9]

解释:

list1和list2是两个输入列表;

x+y:输出表达式,计算两个列表中所有对应位置元素的和;

for x in list1:外层循环,遍历list1中的每一个元素;

for y in list2:内层循环,遍历list2中的每一个元素。

4.2.4 示例四:使用函数的列表推导式

生成一个列表,包含输入列表中每个字符串的大写形式。

list_demo = [‘hello’,’world’,’python’]
upper_demo = [s.upper() for s in list_demo]
print(upper_demo) #输出:[‘HELLO’,’WORLD’,’PYTHON’]

解释:

list_demo:是一个包含字符串的列表;

s.upper:输出表达式,它将每个字符串转换为大写;

for s in list_demo:循环,遍历list_demo中的每个字符串。

4.2.5 示例五:使用多个循环的列表推导式

生成一个列表,包含两个列表中所有可能的元素对。

list1 = [1,2]
list2 = [‘a’,’b’]
list_demo = [(x,y) for x in list1 for y in list2]
print(list_demo)  #输出:[(1,’a’),(1,’b’),(2,’a’),(2,’b’)]

解释:

list1和list2是两个输入列表;

(x,y):是输出表达式,它创建一个元组,包含来自list1和list2的元素对;

for x in list1:外层循环,遍历list1中的每个元素;

for y in list2:内层循环,遍历list2中的每个元素。

五、 Python中库的介绍

5.1 Python中常用库的介绍

Python是一种功能强大的编程语言,其生态系统中有大量的库和包,可以用于各种用途。

1.数据分析

① Numpy:用于高性能数值计算的库,提供了多维数组对象和一系列处理数组的函数;

② Pandas:提供高性能、易用的数据结构和数据分析工具,特别适合处理表格数据。

2.数据可视化

① Matplotlib:强大的数据可视化库,可以生成多种格式的图形;

② Seaborn:基于Matplotlib,提供了更美观、高级的绘图样式。

3.机器学习和深度学习

① TensorFlow:由Google开发,广泛用于深度学习应用,支持广泛的网络架构和算法;

② PyTorch:由Facebook的AI研究团队开发的开源机器学习库,它提供了灵活的深度学习工具,并且易于理解和实现;

③ scikit-learn:提供简单有效的数据挖掘和数据分析工具,适用于多种机器学习任务。

相关库的代码示例

5.1.1 Numpy库

Import numpy as np
#创建一个一维数组
array_1 = np.array([1,2,3,4,5])
print(array_1)
#创建一个二维数组
array_2 = np.array([[]1,2,3],[4,5,6],[7,8,9])
print(array_2)

3.1.2 Pandas库

Import pandas as pd

data = { 
'Name': ['Alice', 'Bob', 'Ben'], 
'Age': [25, 26, 27],
'City': ['beijing', 'shenzhen', 'shanghai']
}
df = pd.DataFrame(data)
print(df)

5.1.3 Matplotlib库

Import matplotlib.pyplot as plt
#数据
x = [1,2,3,4,5]
y = [2,3,5,7,11]
#创建散点图
plt.scatter(x, y, color='r', marker='o')
# 添加标题和标签
plt.title('简单散点图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
# 显示图形
plt.show()

5.1.4 TensorFlow库

plt.ylabel('Y轴')
import tensorflow as tf
	
# 创建张量
a = tf.constant([1, 2, 3])
b = tf.constant([4, 5, 6])
# 张量运算
c = a + b
print("张量 c 的值:", c.numpy())

六、 时间模块

6.1 时间模块介绍

在Python中,处理时间相关的操作通常会用到datetime模块和time模块。这两个模块提供了丰富的函数和类,可以帮助开发者进行日期和时间的处理、格式化、计算等操作。

6.1.1 datetime模块

datetime模块提供了多种处理日期和时间的类,包括datetime、data、time和timedelta。

主要类

datetime.datetime:表示日期和时间的组合。

datetime.date:表示日期。

datetime.time:表示时间。

datetime.timedelta:表示两个日期或时间之间的差值。

1. 获取当前日期和时间

from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
print("当前日期和时间:", now)

2. 获取当前日期

from datetime import date
# 获取当前日期
today = date.today()
print("当前日期:", today)

3. 格式化日期和时间

from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
# 格式化日期和时间
time_now = now.strftime('%Y-%m-%d %H:%M:%S')
print('格式化后的日期和时间:',time_now)

4. 解析日期和时间

from datetime import datetime
# 解析日期和时间字符串
date_str = "2024-10-24 12:34:56"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("解析后的日期和时间:", parsed_date)

5. 计算日期差值

from datetime import datetime, timedelta
# 获取当前日期和时间
now = datetime.now()
# 计算三天后的日期
three_days_later = now + timedelta(days=3)
print("三天后的日期和时间:", three_days_later)

6.1.2 time模块

time模块提供了许多与时间相关的函数,主要用于处理时间戳和时间间隔。

主要函数

time.time():返回当前时间的时间戳(自1970年1月1日以来的秒数);

time.sleep(seconds):使用程序暂停指定的秒数;

time.strftime(format,struct_time):将时间元组格式化为字符串;

time.strptime(string,format):将字符串解析为时间元组;

time.localtime([seconds]):将时间戳转换为本地时间元组;

time.gmtime([seconds]):将时间戳转换为UTC时间元组。

1. 获取当前时间的时间戳

import time
#获取当前时间的时间戳
timestamp = time.time()
print('当前时间的时间戳:',timestamp)

2. 暂停程序

Import time
print("程序开始")
time.sleep(2)  # 暂停2秒
print("两秒后")

3. 格式化时间

Import time
#获取当前时间的时间元组
local_time = time.localtime()
#格式化时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("格式化后的时间:", formatted_time)

4. 解析时间字符串

Import time
time_str = "2024-10-24 16:34:56"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print("解析后的时间元组:", parsed_time)

6.2 倒计时计时器

学习过时间模块后接下来为大家展示一个案例实操来带大家体验一下时间模块的使用方法。

1. 导入时间模块

import time

2. 定义倒计时函数(请自行按照样式进行代码编写,不要复制代码运行)

def countdown(seconds):
	while seconds > 0:
		mins,secs = divmod(seconds,60)
timer = '{:02d}:{:02d}'.format(mins,secs)
        print(f'剩余时间:{timer}({seconds}秒)')
time.sleep(1)
seconds -= 1
		print('时间到!')

countdown函数:接受一个整数seconds,表示倒计时的总秒数;

while seconds > 0: 当seconds大于0时,进入循环;

mins,secs = divmod(seconds,60)使用divmod函数将seconds转换为分钟和秒数。divmod返回一个元组,其中第一个元素是商(分钟),第二个元素是余数(秒);

timer = '{:02d}:{:02d}'.format(mins,secs)将分钟和秒数格式化为mm:ss形式的字符串。{:02d}表示至少两位数,不足两位时前面补0;

print(f'剩余时间:{timer}({seconds})')打印当前的倒计时时间,包括剩余的几分钟和秒数,以及剩余的总秒数。

time.sleep(1)暂停程序1秒钟,模拟倒计时的效果。

seconds -=1每过一秒,seconds减1。

print(‘时间到!’)当seconds变为0时,打印’时间到!’。

3. 定义主函数(请自行按照样式进行代码编写,不要复制代码运行)

def main():
	print('欢迎来到倒计时计时器!')
	try:
		seconds = int(input('请输入倒计时的秒数:'))
		if seconds < 0:
			raise ValueError('秒数必须是非负整数')
		countdown(seconds)
	except ValueError as e:
		print(f'输入错误:{e}')

main主函数:程序的主入口。

print('欢迎来到倒计时计时器!')打印欢迎信息。

try尝试执行以下代码块,捕获可能的异常。

seconds = int(input('请输入倒计时的秒数:'))提示用户输入倒计时的秒数,并将其转换为整数。

if seconds < 0如果输入的秒数小于0,抛出ValueError异常,提示用户输入错误。

countdown(seconds)调用countdown函数,开始倒计时。

except ValueError as e:捕获ValueError异常,打印错误信息。

4. 程序入口(请自行按照样式进行代码编写,不要复制代码运行)

If __name__ == '__main__':
	main()

if __name__ == ‘__main__’确保当脚本被直接运行时,才会执行main函数。如果脚本被其他模块导入,则不会执行main函数。

main()调用main函数,启动程序。

5. 运行程序

代码编辑完毕后我们右击鼠标运行代码,运行后提示请输入倒计时。

输入想要进行的倒计时后返回倒计时。

至此,计算倒计时小程序就制作完毕!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。