Python、Java、JavaScript、C、Go等编程语言如何实现“定时器”功能

news/2024/4/20 20:41:13/文章来源:https://blog.csdn.net/qq_45404396/article/details/129140754

这是CSDN平台2月推出的一个活动(活动链接为:CSDN 征文活动),聊聊时间的话题,小编我也不知道有什么好聊的时间的话题,看了CSDN给出的部分话题上,有一个这样的话题,如何用各种编程语言实现“定时器”,觉得这个不错,于是就写了这篇博文。

下面是运用几种常见的编程语言实现“定时器”功能(就比如午睡吧!从某时刻程序开始运行,到程序结束时提醒用户该起来敲代码了)。

1. Python 实现

import timetime_2 = 20
# 计时时间(单位:秒)
for i in range(time_2):time.sleep(1)
print('主人,该起来敲代码了!')

这代码的确一点毛病也没有,但是,却起不到提示作用(毕竟只是在控制台打印输出信息而已)
请添加图片描述
为此,可以增加一个音频文件播放,如下:

import time
from pygame import mixertime_2 = 1
# 计时时间(单位:秒)
filename = '1.mp3'
# 音频文件存储路径
for i in range(time_2):time.sleep(1)
print('主人,该做XXX事情了!')mixer.init()
mixer.music.load('1.mp3')
mixer.music.set_volume(1)
mixer.music.play(loops=-1)
# loops=-1表示重复播放
while mixer.music.get_busy():str_1 = input("输入:(只要不为空即可)")if str_1 != '':mixer.music.stop()#  结束音乐播放mixer.stop()# 停止播放所有通道break

运行结果(音频文件会重复播放,直到用户在控制台输入一个非空字符串才会停止):

Python实现计时器


但是这样好像也不怎么完美,就是看不到计时时间的倒计时,于是小编引入 sys模块,增加一个时间倒计时的显示,参考代码如下:

import time
from pygame import mixer
import systime_2 = 3660
# 计时时间(单位:秒)
filename = '1.mp3'# 音频文件存储路径def get_str(sum_seconds: int):hour = sum_seconds // (60 * 60)# 小时minute = (sum_seconds - 3600 * hour) // 60# 分second = sum_seconds - hour * 3600 - minute * 60# 秒return '{:02d}:{:02d}:{:02d}'.format(hour, minute, second)for i in range(time_2, -1, -1):sys.stdout.write('\r')sys.stdout.write(get_str(i))sys.stdout.flush()time.sleep(1)
print('\n主人,该做XXX事情了!')mixer.init()
mixer.music.load('1.mp3')
mixer.music.set_volume(1)
mixer.music.play(loops=-1)
# loops=-1表示重复播放
while mixer.music.get_busy():str_1 = input("输入:(只要不为空即可)")if str_1 != '':mixer.music.stop()#  结束音乐播放mixer.stop()# 停止播放所有通道break

运行结果:

Python实现计时器

2. Java实现

Java实现最简单的代码肯定是这个了。

public class Test {public static void main(String[] args) {int time_2 = 5;for(int i=0;i<time_2;i++) {try {Thread.sleep(1000);// 单位:毫秒} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("主人,该起来敲代码了!");}
}

如果使用Java也想达到上述Python那种效果,参考代码如下:

public class Test {private static String getStr(int sumSeconds) {int hour = sumSeconds/3600;int minute = (sumSeconds - hour*3600)/60;int second = sumSeconds - hour*3600 - minute *60;return String.format("%02d:%02d:%02d", hour,minute,second);}public static void main(String[] args) throws Exception{int time_2 = 3660;String str_2 = "\r";for(int i=time_2;i>=0;i--) {String timeStr = getStr(i);System.out.print(str_2);System.out.print(timeStr);try {Thread.sleep(1000);// 单位:毫秒} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("\n主人,该起来敲代码了!");}
}

【注】:没有音频文件的播放。
运行结果(直接使用cmd命令运行):
请添加图片描述

3. JavaScript实现(需要下载nodejs才行)

var time_2 = 5*60;
// 单位:秒
var fun1 = (sum_second) => {let hour = parseInt(sum_second / 3600);let minute = parseInt((sum_second - 3600*hour) / 60);let second = sum_second - hour * 3600 - minute * 60;hour = hour > 10 ? '' + hour : '0' + hour;minute = minute > 10 ? '' + minute : '0' + minute;second = second > 10 ? '' + second : '0' + second;return `${hour}:${minute}:${second}`;
}var fun2 = () => {let i = time_2;let timer = setInterval(() => {if (i < 0) {clearInterval(timer);console.log('\n主人,该起来敲代码了!');}process.stdout.write('\r');process.stdout.write(fun1(i));// 不会换行i--;}, 1000)
}fun2();

运行结果:
请添加图片描述

4. C语言实现

参考代码如下:

#include <stdlib.h>
#include <stdio.h>
#include <windows.h>int main(){int time_2 = 5;// 秒数(单位:秒)for(int i=time_2;i>0;i--){int sumSecond = i;int hour = sumSecond / 3600;int minute = (sumSecond - hour * 3600) / 60;int second = sumSecond - hour * 3600 - minute * 60;printf("%02d:%02d:%02d",hour,minute,second);printf("\r");Sleep(1000);}printf("\n主人,该起来敲代码了!\n");system("pause");return 0;
}

运行结果如下:
在这里插入图片描述

5. Go语言实现

参考代码如下:

package mainimport ("fmt""time"
)func main(){time_2 := 3660// 时间(单位:秒)for i := time_2;i > 0;i -- {hour := i/3600minute := (i - 3600 * hour)/60second := i - hour * 3600 - minute * 60timeStr := fmt.Sprintf("%02d:%02d:%02d",hour,minute,second);fmt.Print(timeStr);time.Sleep(time.Duration(1)*time.Second);fmt.Print("\r");}fmt.Println("主人,该起来敲代码了!");
}

运行结果:
请添加图片描述
欢迎各位大佬评论,指出上述代码中存在的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_72557.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GUI可视化应用开发及Python实现

0 建议学时 4学时&#xff0c;在机房进行 1 开发环境安装及配置 1.1 编程环境 安装PyCharm-community-2019.3.3 安装PyQt5 pip install PyQt5-tools -i https://pypi.douban.com/simple pip3 install PyQt5designer -i https://pypi.douban.com/simple1.2 环境配置 选择“…

JVM13命令行

2. JVM 监控及诊断工具-命令行篇 2.1. 概述 简单命令行工具 在我们刚接触 java 学习的时候&#xff0c;大家肯定最先了解的两个命令就是 javac&#xff0c;java&#xff0c;那么除此之外&#xff0c;还有没有其他的命令可以供我们使用呢&#xff1f; 我们进入到安装 jdk 的…

【11】FreeRTOS的延时函数

目录1.延时函数-介绍2.相对延时函数-解析2.1函数prvAddCurrentTaskToDelayedList-解析2.3滴答定时器中断服务函数xPortSysTickHandler()-解析2.4函数taskSWITCH_DELAYED_LISTS() -解析3.延时函数-实验4.总结1.延时函数-介绍 函数描述vTaskDelay()相对延时xTaskDelayUntil()绝对…

CTFer成长之路之SSRF漏洞

SSRF漏洞CTF SSRF Training 题目描述: web容器中存在一个flag&#xff0c;mysql中存在一个管理员账号密码&#xff0c;其余容器中均没有特定flag mysql容器中内置 tcpdump vulnweb容器中内置一个 fpm.py 攻击脚本 docker-compose.yml version: "3" services:w…

Spring代理模式——静态代理和动态代理

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

笔记本电脑电池和充电器CE认证IEC62133测试

EC 符合性声明 - 您可以从品牌所有者或欧盟境内的商品官方进口商处获取此文件。证明您的商品经过检测符合下表所列标准的文件。您也可以从品牌所有者或欧盟境内的官方进口商处获取此文件。原品牌的笔记本电脑或手机&#xff08;如三星、苹果、戴尔、惠普等&#xff09;提供的原…

【验证码的识别】—— 点触式验证码的识别

一、前言 大家好&#xff0c;不知不觉的我来csdn已经又一周年了&#xff0c;在这一年里&#xff0c;我收获了很多东西&#xff0c;我是2022年2月22日入驻CSDN的&#xff0c;一开始只是为了方便浏览文章的&#xff0c;后来&#xff0c;我也有事没事发发文章&#xff0c;创作了1…

leetcode 1011. Capacity To Ship Packages Within D Days(D天内运送包裹的容量)

数组的每个元素代表每个货物的重量&#xff0c;注意这个货物是有先后顺序的&#xff0c;先来的要先运输&#xff0c;所以不能改变这些元素的顺序。 要days天内把这些货物全部运输出去&#xff0c;问所需船的最小载重量。 思路&#xff1a; 数组内数字顺序不能变&#xff0c;就…

Python 自动化测试必会技能板块—unittest框架

说到 Python 的单元测试框架&#xff0c;想必接触过 Python 的朋友脑袋里第一个想到的就是 unittest。的确&#xff0c;作为 Python 的标准库&#xff0c;它很优秀&#xff0c;并被广泛应用于各个项目。但其实在 Python 众多项目中&#xff0c;主流的单元测试框架远不止这一个。…

【C ++】C++入门知识(二)

C入门&#xff08;二&#xff09; 作者&#xff1a;小卢 专栏&#xff1a;《C》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 1.引用 1.1.引用的概念及应用 引用&#xff08;&&#xff09; 引用不是新定义一个变量&#xff0…

C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数

凡事发生必将有益于我&#xff0c;高手&#xff0c;从来都不仅仅是具备某种思维的人&#xff0c;而是那些具备良好学习习惯的人&#xff0c;成为高手&#xff0c;无他&#xff0c;手熟尔&#xff01;加油在最近的学习之中&#xff0c;对于格式化输出这个知识点&#xff0c;这里…

Spring自动装配的底层逻辑

Spring是如何自动装配Bean的&#xff1f;看源码一些自己的理解&#xff0c;如有错漏&#xff0c;请指正 使用Spring之前我们要先去web.xml中设置一下Spring的配置文件&#xff0c;在Spring的配置文件中&#xff0c;是通过component-scan扫描器去扫描base-package底下所有的类装…

google hacker语句

哎&#xff0c;我就是沾边&#xff0c;就是不打实战(&#xffe3;o&#xffe3;) . z Z 文章目录前言一、什么是谷歌Docker&#xff1f;二、受欢迎的谷歌docker语句谷歌docker的例子日志文件易受攻击的 Web 服务器打开 FTP 服务器SSH私钥电子邮件列表实时摄像机MP3、电影和 PDF…

Rocky 9.1操作系统实现zabbix6.0的安装部署实战

文章目录前言一. 实验环境二. 安装zabbix过程2.1. 安装zabbix源2.2 安装zabbix相关的软件2.3 安装数据库并启动2.4 开始初始化数据库&#xff1a;2.5 创建数据库实例及对应的用户2.6 导入官网提供的数据2.7 配置zabbix 服务的配置文件2.8. 启动服务2.9 从网页进行安装2.10 登陆…

从0开始学python -37

Python3 错误和异常 作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xff08;断…

单元测试面试秘籍分享

1. 什么是单元测试 “在计算机编程中&#xff0c;单元测试又称为模块测试&#xff0c;是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中&#xff0c;一个单元就是单个程序、函数、过程等&#xff1b;对于面向对象编程&#xff0c;最…

代码随想录NO49 | 动态规划 _LeetCode1143.最长公共子序列 1035.不相交的线 53. 最大子序和

动态规划 _LeetCode1143.最长公共子序列 1035.不相交的线 53. 最大子序和今天继续子序列问题&#xff01; 1143.最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符…

从功能测试(点点点)到进阶自动化测试,实现薪资翻倍我只用了3个月时间

前言 从事测试工作已3年有余了&#xff0c;今天想聊一下自己刚入门时和现在的今昔对比&#xff0c;虽然现在也没什么成就&#xff0c;只能说笑谈一下自己的测试生涯&#xff0c;各位看官就当是茶余饭后的吐槽吧&#xff0c;另外也想写一写自己的职场感想&#xff0c;希望对刚开…

如何使用 ESP-PROG 板的 Program 接口为 ESP32-S3-WROOM-1 系列的模组烧录固件?

ESP-PROG 是一款乐鑫推出的开发调试工具&#xff0c;具有自动下载固件、串口通信、JTAG 在线调试等功能。具体使用说明参见&#xff1a;ESP-Prog 下载与调试板介绍 。 ESP-Prog 采用 FTDI 公司的 FT2232HL 为 USB Bridge Controller 芯片&#xff0c;可通过配置将 USB 2.0 接口…

分布式链路追踪-skywalking

一、分布式调用链随着业务的高速发展&#xff0c;服务之间的调用关系愈加复杂线上每一个请求会经过多个业务系统&#xff0c;并产生对各种缓存或者DB 的访问&#xff0c;业务流会经过很多个微服务的处理和传递。问题&#xff1a;• —次请求的流量从哪个服务而来&#xff1f;最…