sys.stdin对象——实现标准输入

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

语法参考

sys.stdin是一个标准化输入对象,可以连续输入或读入文件所有内容,不结束,不能直接使用。输入完成后,再对输入数据进行处理,这是sys.stdin的强大之处。sys.stdin.readline()方法和sys.stdin.readlines()方法是经常用到的方法,sys.stdin.readline()方法输入一行,输完成后自动添加’\n’。sys.stdin.readlines()可以连续输入数据,此时可以将输入的数据作为一个整体进行使用。sys.stdin.readline()的基本用法如下:

sys.stdin.readline()

使用sys.stdin.readline()与input()方法都可以实现标准化输入,但两者有以下区别:

l  sys.stdin.readline()方法不能填写提示输入信息的说明文字,但input()方法在括号内可以直接填写输入信息相关的说明文字,如input('请输入您的名字:')。

l  sys.stdin.readline()方法会在输入新后加“\n”换行符,而input()方法在输入完成后不会添加任何内容。要想取消sys.stdin.readline()方法添加的换行符“\n”,可以使用strip('\n') 去除换行符。

下面代码获取用户输入内容的长度,可以比较一下sys.stdin.readline()和input()输入内容的区别。代码如下:

import sys

line1 = sys.stdin.readline()  # 包含换行符"\n"

line2 = sys.stdin.readline().strip('\n')    # 去掉换行符"\n"

line3 = input("")                 # 不包含换行符"\n"

print(len(line1), len(line2), len(line3))

输出结果如下:

要输入多行数据,使用sys.stdin.readlines()方法是最有效的,该方法可以连续输入多行,输入完成时,需要回车到空行,然后按ctrl+D输出结果。应用参见锦囊2。简单实现多行输入的代码如下:

import sys

message = sys.stdin.readlines()

print(message)

用户连续输入多行信息,如图1所示,输入完成后,回车到空行,然后按ctrl+D输出结果如图2所示:

图1  输入多行数据

图2  输出显示

    快用锦囊

锦囊1:常规输入相关内容

sys.stdin.readline()方法不能添加输入提示说明文字,如果要添加提示说明文字,需要使用print()方法进行输入信息提示,代码如下:

import sys

print('请输入您的名字: ')

name = sys.stdin.readline()

print('您输入的名字为: ', name)

程序运行结果如下:

锦囊2:将输入作为整体进行处理

在批量输入数据的时候,经常需要输完数据后在对数据做统一处理,如对数据统一编号、格式处理等,sys.stdin.readlines可以直接将输入的数据作为整体,输入完成后再做数据处理,如将用户输入的姓名前统一加上3位数字编号,输入完成时一定要回车,然后按“ctrl +D”输出程序运行结果。程序代码如下:

import sys

index=0     #  初始化编号

for line in sys.stdin.readlines():            #  按行读取输入的数据

      line = line.strip()                       #  去掉空格和换行符
      index=index+1                             #  编号递进加1
      if line:                                  #  如果行输入不为空
          txt=str(index).zfill(3)+"  "+ line    # 将输入的数据前加上3位编号
      print (txt)

运行程序,输入数据,如图3所示,结束输入时需要先回车到空行,然后按“ctrl +D”输出程序运行结果,如图4所示。

锦囊3:根据两点坐标计算直线的斜率

在勘探、地理探测工作中,有时需要根据输入空间的位置计算两点(x1,y1)(x2,y2)形成直线的斜率,斜率的计算公式为:(y2 - y1) / (x2 - x1),下面编写一个程序,根据用户输入的两点坐标计算直线斜率k。代码如下:

import sys
print('请输入两点的4个坐标值,形式为x1 y1 x2 y2,用空格间隔!!')
while True:
      line = sys.stdin.readline()
      if line == '\n': break
      
x1, y1, x2, y2 = (float(x) for in line.split())
      k = abs(y2 - y1) / abs(x2 - x1)
      print('两点坐标的斜率为:',format(k,'.2f'))

运行程序,输出结果如图5所示。

图5  两点坐标斜率

也可以直接使用sys.stdin对象输入数据,然后循环读取sys.stdin对象的数据。下面使用sys.stdin对象根据两点坐标计算直线的斜率,代码如下:

import sys

print('请输入两点的4个坐标值,形式为x1 y1 x2 y2,用空格间隔!!')

for line in sys.stdin:
      if line == '\n': break
      
x1, y1, x2, y2 = (float(x) for in line.split())
      k = abs(y2 - y1) / abs(x2 - x1)
      print( format(k,'.2f'))

锦囊4:利用sys.stdin读取文件信息

sys.stdin是一个普通文件对象,除了从标准输入读取内容以外,也可以使用sys.stdin调用读取文件信息。如读取文件”gjqh.txt”的所有国家区号,然后调用readlines函数将前3位为“* 8”的区号输出出来,实现代码如下:

import sys
   fileName='gjqh.txt'
   def readfile(file,ord):                     #  定义查询电话区号的函数readfile
       with open(file) as txt:                 #  将国际区号信息文件赋值给变量txt
           sys.stdin = txt                     #  将变量txt的数据赋值给sys.stdin对象
           for line in  sys.stdin.readlines():       #  按行读取sys.stdin对象的数据
                line=line.strip()                   #  去除空格
                if line [0:3]==ord:                 #  按每行数据的前3个字符查询
                    print(line)                     #  输出查询结果
    readfile(fileName,'* 8')   #  调用readfile(),查询国际区号前三个字符是 '* 8'的国家或地区

运行程序,输出效果如图6所示。

图6  读取文件

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

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

相关文章

数据结构——

1. 什么是并查集? 在计算机科学中,并查集(英文:Disjoint-set data structure,直译为不数据结构交集)是一种数据结构,用于处理一些不交集(Disjoint sets,一系列没有重复元…

C#基于SkiaSharp实现印章管理(2)

上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象,但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。   通过百度及查看微软的帮助文档,上述情况下需自定义转换类以处理SKColor类型数据的…

AI自动生成角色和情节连续的漫画,中山大学联想提出AutoStudio,可以多轮交互式连续生成并保持主题一致性。

中山大学和联想研究院提出AutoStudio: 是一种无需训练的多代理框架,用于多轮交互式图像生成,能够在生成多样化图像的同时保持主体一致性。 AutoStudio 采用三个基于 LLM 的智能体来解释人类意图并为 SD 模型生成适当的布局指导。此外,还引入…

go中的方法 func-----数据类型

本文是java学习者学go种产生的容易记混点的笔记,所以有其他编译语言的基础更好 go的方法有点像js 基础 func main() {fmt.Println("Starting")var p *string new(string)*p "hello world"demo : "demo"fmt.Println(*&demo) //这样既然也…

山水风景视频素材去哪里下?去哪里找?山水风景下载网站分享

在这个数字时代,视频已经成为最直观、有效的传达情感和分享故事的工具。对于那些渴望通过视频传递视觉美感和情感共鸣的创作者来说,拥有高质量的山水风景视频素材是关键。互联网虽然是一个信息量庞大的平台,但找到令人赞叹的山水风景视频素材…

SOA和ESB介绍

SOA(面向服务的架构) 面向服务的架构(Service-Oriented Architecture,SOA)是一种设计理念,用于构建松耦合的、可互操作的、模块化的服务。在SOA架构中,应用程序被划分为一系列的服务&#xff0c…

让AI保持怪异

让AI保持怪异 Anthropic的创意技术专家和员工设计师凯尔图尔曼(Kyle Turman)分享了一种深深引起共鸣的观点。他说(转述原话):“人工智能实际上真的很奇怪,我认为人们对这一点的认识还不够。”这引发了我向小组提出的问题:我们是否有消毒人工智能固有的陌生感的风险?…

基于百度地图实现矩形绘制/电子围栏/自定义覆盖物选择、点击、区域选中、轨迹绘制

目录 开发前的准备账号注册页面创建地图初始化矩形绘制开启绘制模式监听绘制完成事件矩形取消事件自定义覆盖物渲染数据准备覆盖物渲染自定义点击事件优化用户刷新提供的覆盖物添加右键菜单轨迹绘制开发前的准备 账号注册 百度地图开发者平台点此访问 登录注册后点击右上角的控…

VS 在多线程中仅调试某个线程

调试多线程程序时,只想观察某个线程的运行情况; 但是,由于线程切换执行,会导致调试时焦点在几个代码块之间跳来跳去,故需要解决这个问题。 参考文章: C#使用线程窗口调试多线程程序。 1 打开线程窗口&…

Marin说PCB之total etch length规则知多少?

魔都上海最近迎来了一轮梅雨季节了,小编我上周就已经提前把被子衣服袜子都晒了一遍,省的后面一段时间下雨就不能晒了。这种阴雨绵绵的天气当然在家里睡觉最舒服了,上周留正当我在家里夏眠的时候,突然被一阵手机铃声吵醒了&#xf…

已解决:SQL Server 2012评估期已过

解决方案如下: 第一步,打开2012版的安装中心,选择版本升级 参考路径: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft SQL Server 2012\配置工具 第二步, 输入产品序列号(其他版本的请自…

springboot vue 开源 会员收银系统 (8) 收银台、开卡结算及订单的优化升级

前言 完整版演示 开发版演示 在之前的开发进程中,我们基本搭建了收银台的基础。这次着重梳理一下收银台相关功能的开发及优化情况。 1.会员查询与开卡 收银台新增加了会员筛选功能 并且会员和会员卡是一对多的关系 理论可以开无数张卡 默认选择一张卡 会员卡选择…

vue3 层级选择器 el-cascader展示 更多的信息

cascader 正常情况下可以满足我们所需&#xff0c;一般展示的就是 {label:‘’ &#xff1b;value:‘’} 但有时候需要展示更多的信息工用户查看&#xff0c;如下图。此时就需要我们进行一定的改造。 代码如下&#xff1a; <el-form-item label"相关人员"><…

一控十!轻松远程控制你的安卓大军:Windows/macOS/Linux全平台攻略

只要是安卓7.0及以上版本的手机&#xff0c;都可以使用AirDroid的远程控制功能。 如果你的电脑是Windows&#xff0c;macOS系统&#xff0c;可以安装客户端或使用网页版。 如果你的电脑是Linux系统&#xff0c;也可以通过AirDroid网页版远程控制安卓手机。 下载AirDroid个人版…

平凉小果子,平凡中的惊艳味道

平凉美食小果子&#xff0c;这看似平凡的名字背后&#xff0c;藏着无数平凉人的美好回忆。它不仅仅是一种食物&#xff0c;更是一种情感的寄托&#xff0c;一种文化的传承。小果子的制作过程看似简单&#xff0c;实则蕴含着深厚的功夫。选用优质的面粉作为主要原料&#xff0c;…

ACL 2023事件相关(事件抽取、事件关系抽取、事件预测等)论文汇总

ACL 2023事件抽取相关(事件抽取、事件关系抽取、事件预测等)论文汇总&#xff0c;后续会更新全部的论文讲解。 Event Extraction Code4Struct: Code Generation for Few-Shot Event Structure Prediction 数据集&#xff1a;ACE 2005 动机&#xff1a;与自然语言相比&#xf…

对抗生成网络GANP52-

1.对抗生成网络的重点&#xff1a;有原始的输入&#xff0c;按照需求&#xff0c;生成新的数据。 eg1:超分辨率重构(首先先告诉神经网络什么是低分辨率&#xff0c;什么是高分辨率&#xff0c;让计算机学习两者的联系。 eg2:警察抓小偷的时候&#xff0c;由于录像太过模糊&…

最新解决docker镜像无法下载问题

1.增加或修改daemon.json文件 ​ cd /etc/dockervi daemon.json{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }2.重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 3.验证 下载https://txodoo.cn/blog/11/d…

观星观景大屏呈现 实时拍摄长焦定格 当当狸智能天文望远镜TW2来啦

《宇宙的奇迹》中有这样一句话&#xff1a;“我们与那些遥远星系息息相关&#xff0c;无论它们是如何与我们天各一方&#xff0c;那些经过数十亿年旅行到达地球的光线&#xff0c;终究会把我们联系在一起”。 想象一下—— 等到繁星低垂&#xff0c;月光皎洁之时&#xff0c;…

基于Springboot+Vue的校友社交系统(带1w+文档)

基于SpringbootVue的校友社交系统(带1w文档) 校友社交系统作为一种典型的管理系统也迅速的发展并深入人们的日常生活中&#xff0c;它使用户足不出户就可以管理自己的校友社交信息等&#xff0c;最大化减缩了用户的管理时间&#xff0c;提高了管理效率。 项目简介 基于SSMVUE的…