当前位置: 首页 > news >正文

掌握Python3输入输出:轻松实现用户交互、日志记录与数据处理

Python 是一门简洁且强大的编程语言,广泛应用于各个领域。在 Python 编程中,输入和输出是基本而重要的操作。无论是进行用户交互、记录日志信息,还是将计算结果输出到控制台或文件,掌握这些操作都是编写高效 Python 程序的关键。本文将深入探讨 Python3 中的输入和输出,从基础语法到实际应用,带您全面掌握这一重要技能。

基本语法

输入

Python3 中使用 input() 函数获取用户输入。input() 会将所有输入作为字符串处理,返回用户输入的内容。

name = input("Enter your name: ")
print("Hello, " + name + "!")
输出

Python3 使用 print() 函数来输出信息。print() 可以输出多个值,值之间用逗号分隔,默认情况下会以空格分隔这些值。

print("Hello, world!")
print("The answer is", 42)

命令

输入命令
  • input(prompt):显示提示信息并等待用户输入,返回字符串形式的用户输入。
输出命令
  • print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False):输出对象到文本流文件(默认为标准输出 sys.stdout),参数包括:
    • *objects:要打印的对象,可以是多个,以逗号分隔。
    • sep:对象间的分隔符,默认为空格。
    • end:行末尾的字符,默认为换行符。
    • file:写入的文件对象,默认为 sys.stdout。
    • flush:是否强制刷新文件流。

示例

输入示例
age = input("Enter your age: ")
print("Your age is " + age)
输出示例
print("Hello, world!")
print("The sum of 1 and 2 is", 1 + 2)
格式化输出

Python 提供了多种格式化字符串的方法,包括 % 操作符、str.format() 方法以及 f-strings(格式化字符串字面值)。

  • % 操作符
name = "Alice"
age = 30
print("Name: %s, Age: %d" % (name, age))
  • str.format() 方法
name = "Alice"
age = 30
print("Name: {}, Age: {}".format(name, age))
  • f-strings (Python 3.6+)
name = "Alice"
age = 30
print(f"Name: {name}, Age: {age}")

应用场景

1. 用户交互

用户交互是通过 input() 函数获取用户输入,并通过 print() 函数给出反馈。input() 函数会暂停程序的执行,等待用户输入,然后将输入的内容作为字符串返回。print() 函数则可以输出信息到控制台,帮助用户了解程序的状态或输出结果。

示例代码

# 用户交互示例:简单的问答游戏
name = input("Enter your name: ")  # 获取用户输入的名字
print("Hello, " + name + "! Welcome to the game.")  # 打印欢迎信息age = input("Enter your age: ")  # 获取用户输入的年龄
print("You are " + age + " years old.")  # 打印年龄信息# 获取两个数字并计算其和
num1 = input("Enter the first number: ")
num2 = input("Enter the second number: ")
sum_result = int(num1) + int(num2)  # 将输入的字符串转换为整数并计算和
print("The sum of " + num1 + " and " + num2 + " is " + str(sum_result) + ".")  # 打印计算结果
2. 日志记录

在开发和调试过程中,记录日志信息是非常重要的。日志可以帮助开发者了解程序的运行状态、跟踪变量值和错误信息。虽然在实际项目中通常会使用专门的日志库(如 logging),但在简单场景下也可以使用 print() 函数来输出日志信息。

示例代码

# 日志记录示例:简单的日志输出
def add_numbers(a, b):print(f"INFO: Adding {a} and {b}")  # 打印日志信息return a + bdef main():x = 10y = 20print("DEBUG: x =", x, "y =", y)  # 打印调试信息result = add_numbers(x, y)print("INFO: Result of addition is", result)  # 打印结果信息main()
3. 数据输出

将计算结果或数据处理结果输出到控制台或文件。使用 print() 函数可以将结果输出到控制台,而使用文件操作函数可以将结果写入文件中。

示例代码

# 数据输出示例:将结果输出到控制台和文件# 输出到控制台
def calculate_square(number):square = number * numberprint("The square of", number, "is", square)  # 输出结果到控制台return squarenumber = 5
square_result = calculate_square(number)# 输出到文件
file_path = "output.txt"
with open(file_path, 'w') as file:file.write(f"The square of {number} is {square_result}\n")  # 将结果写入文件print(f"The result has been written to {file_path}")

综合示例

将用户交互、日志记录和数据输出结合在一起,构成一个完整的示例程序。

# 综合示例:用户交互、日志记录和数据输出def get_user_input(prompt):return input(prompt)def log_message(message):print(f"LOG: {message}")def save_result_to_file(result, file_path):with open(file_path, 'w') as file:file.write(result)log_message(f"Result has been written to {file_path}")def main():log_message("Program started")# 用户交互name = get_user_input("Enter your name: ")log_message(f"User name: {name}")age = get_user_input("Enter your age: ")log_message(f"User age: {age}")num1 = get_user_input("Enter the first number: ")num2 = get_user_input("Enter the second number: ")log_message(f"User entered numbers: {num1}, {num2}")# 数据处理try:num1 = int(num1)num2 = int(num2)sum_result = num1 + num2log_message(f"Calculated sum: {sum_result}")result_message = f"Hello, {name}! You are {age} years old. The sum of {num1} and {num2} is {sum_result}."print(result_message)# 数据输出file_path = "result.txt"save_result_to_file(result_message, file_path)except ValueError:log_message("Invalid input: numbers should be integers")print("Please enter valid integer numbers.")log_message("Program ended")if __name__ == '__main__':main()

这个综合示例展示了如何通过用户交互获取输入,通过日志记录输出调试信息和结果,并将计算结果保存到文件中。

注意事项

  1. 类型转换input() 函数返回的是字符串,如果需要整数或其他类型,需要进行类型转换。

    age = int(input("Enter your age: "))
    
  2. 异常处理:输入时要考虑用户可能输入不合法的内容,并进行必要的异常处理。

    try:age = int(input("Enter your age: "))
    except ValueError:print("Please enter a valid number")
    
  3. 编码问题:处理文本文件时要注意编码问题,特别是处理非 ASCII 字符时,使用 open() 时可以指定编码参数。

    with open('file.txt', 'r', encoding='utf-8') as file:content = file.read()
    

总结

Python3 中的输入输出非常简单直观,主要通过 input()print() 函数来实现。可以通过格式化字符串来美化输出,通过类型转换和异常处理来确保输入的有效性。在实际应用中,输入输出操作可以用于用户交互、日志记录和数据输出等场景。理解和掌握这些基本操作,是深入学习和应用 Python 编程的重要基础。

相关文章:

掌握Python3输入输出:轻松实现用户交互、日志记录与数据处理

Python 是一门简洁且强大的编程语言,广泛应用于各个领域。在 Python 编程中,输入和输出是基本而重要的操作。无论是进行用户交互、记录日志信息,还是将计算结果输出到控制台或文件,掌握这些操作都是编写高效 Python 程序的关键。本…...

用于每个平台的最佳WordPress LMS主题

你已选择在 WordPress 上构建学习管理系统 (LMS)了。恭喜! 你甚至可能已经选择了要使用的 LMS 插件,这已经是成功的一半了。 现在是时候弄清楚哪个 WordPress LMS 主题要与你的插件配对。 我将解释 LMS 主题和插件之间的区别,以便你了解要…...

pytorch 加权CE_loss实现(语义分割中的类不平衡使用)

加权CE_loss和BCE_loss稍有不同 1.标签为long类型,BCE标签为float类型 2.当reduction为mean时计算每个像素点的损失的平均,BCE除以像素数得到平均值,CE除以像素对应的权重之和得到平均值。 参数配置torch.nn.CrossEntropyLoss(weightNone,…...

【iOS】UI——关于UIAlertController类(警告对话框)

目录 前言关于UIAlertController具体操作及代码实现总结 前言 在UI的警告对话框的学习中,我们发现UIAlertView在iOS 9中已经被废弃,我们找到UIAlertController来代替UIAlertView实现弹出框的功能,从而有了这篇关于UIAlertController的学习笔记…...

django支持https

测试环境,可以用django自带的证书 安装模块 sudo pip3 install django_sslserver服务端https启动 python3 manage.py runsslserver 127.0.0.1:8001https访问 https://127.0.0.1:8001/quota/api/XXX...

算法题day41(补5.27日卡:动态规划01)

一、动态规划基础知识:在动态规划中每一个状态一定是由上一个状态推导出来的。 动态规划五部曲: 1.确定dp数组 以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数组 debug方式:打印 二、刷题&#xf…...

【附带源码】机械臂MoveIt2极简教程(四)、第一个入门demo

系列文章目录 【附带源码】机械臂MoveIt2极简教程(一)、moveit2安装 【附带源码】机械臂MoveIt2极简教程(二)、move_group交互 【附带源码】机械臂MoveIt2极简教程(三)、URDF/SRDF介绍 【附带源码】机械臂MoveIt2极简教程(四)、第一个入门demo 目录 系列文章目录1. 创…...

基于蚁群算法的二维路径规划算法(matlab)

微♥关注“电击小子程高兴的MATLAB小屋”获得资料 一、理论基础 1、路径规划算法 路径规划算法是指在有障碍物的工作环境中寻找一条从起点到终点、无碰撞地绕过所有障碍物的运动路径。路径规划算法较多,大体上可分为全局路径规划算法和局部路径规划算法两大类。其…...

政务云参考技术架构

行业优势 总体架构 政务云平台技术框架图,由机房环境、基础设施层、支撑软件层及业务应用层组成,在运维、安全和运营体系的保障下,为政务云使用单位提供统一服务支撑。 功能架构 标准双区隔离 参照国家电子政务规范,打造符合标准的…...

android 13 aosp 预置so库

展讯对应的main.mk配置 device/sprd/qogirn**/ums***/product/***_native/main.mk $(call inherit-product-if-exists, vendor/***/build.mk)vendor/***/build.mk PRODUCT_PACKAGES \libtestvendor///Android.bp cc_prebuilt_library_shared{name:"libtest",srcs:…...

mongo篇---mongoDB Compass连接数据库

mongo篇—mongoDB Compass连接数据库 mongoDB笔记 – 第一条 一、mongoDB Compass连接远程数据库,配置URL。 URL: mongodb://username:passwordhost:port点击connect即可。 注意:host最好使用名称,防止出错连接超时。...

基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真,输出收敛曲线以及三维曲面最高点搜索结果。 2.测试软件版本以及运行结果展示 MATLAB2022A版本…...

前端js解析websocket推送的gzip压缩json的Blob数据

主要依赖插件pako https://www.npmjs.com/package/pako 1、安装 npm install pako 2、使用, pako.inflate(reader.result, {to: "string"}) 解压后的string 对象,需要JSON.parse转成json this.ws.onmessage (evt) > {console.log("…...

【wiki知识库】06.文档管理接口的实现--SpringBoot后端部分

目录 一、🔥今日目标 二、🎈SpringBoot部分类的添加 1.调用MybatisGenerator 2.添加DocSaveParam 3.添加DocQueryVo 三、🚆后端新增接口 3.1添加DocController 3.1.1 /all/{ebokId} 3.1.2 /doc/save 3.1.3 /doc/delete/{idStr} …...

c,c++,go语言字符串的演进

#include <stdio.h> #include <string.h> int main() {char str[] {a,b,c,\0,d,d,d};printf("string:[%s], len:%d \n", str, strlen(str) );return 0; } string:[abc], len:3 c语言只有数组的概念&#xff0c;数组本身没有长度的概念&#xff0c;需…...

vue-cli 快速入门

vue-cli &#xff08;目前向Vite发展&#xff09; 介绍&#xff1a;Vue-cli 是Vue官方提供一个脚手架&#xff0c;用于快速生成一个Vue的项目模板。 Vue-cli提供了如下功能&#xff1a; 统一的目录结构 本地调试 热部署 单元测试 集成打包上线 依赖环境&#xff1a;NodeJ…...

机器人--矩阵运算

两个矩阵相乘的含义 P点在坐标系B中的坐标系PB&#xff0c;需要乘以B到A到变换矩阵TAB。 M点在B坐标系中的位姿MB&#xff0c;怎么计算M在A中的坐标系&#xff1f; 两个矩阵相乘 一个矩阵*另一个矩阵的逆矩阵...

期末复习【汇总】

期末复习【汇总】 前言版权推荐期末复习【汇总】最后 前言 2024-5-12 20:52:17 截止到今天&#xff0c;所有期末复习的汇总 以下内容源自《【创作模板】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是ht…...

【IM即时通讯】MQTT协议的详解(3)- CONNACK Packet

【IM即时通讯】MQTT协议的详解&#xff08;3&#xff09;- CONNACK Packet 文章目录 【IM即时通讯】MQTT协议的详解&#xff08;3&#xff09;- CONNACK Packet前言说明一、固定同步详解、可变头部详解总结 前言 关于所有的类型的数据示例已经在上面一篇博客说完&#xff1a; …...

Linux - 深入理解/proc虚拟文件系统:从基础到高级

文章目录 Linux /proc虚拟文件系统/proc/self使用 /proc/self 的优势/proc/self 的使用案例案例1&#xff1a;获取当前进程的状态信息案例2&#xff1a;获取当前进程的命令行参数案例3&#xff1a;获取当前进程的内存映射案例4&#xff1a;获取当前进程的文件描述符 /proc中进程…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...