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?x?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?x?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.pswp.cn/diannao/35855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35855.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

print()函數——打印輸出

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 print()函數是Python編程最常見的函數,常用于輸出程序結果,默認輸出到屏幕,也可以輸出到指定文件。 語法參考 pr…

吉他譜制作軟件哪個好 吉他彈唱譜制作軟件推薦

在市面上存在著多種吉他譜制作軟件,如何選擇一款適合自己需求的軟件成為了許多人面臨的挑戰。下面來看看吉他譜制作軟件哪個好,吉他彈唱譜制作軟件推薦的相關內容。 一、吉他譜制作軟件哪個好 吉他譜制作軟件在現代音樂創作中扮演著重要角色&#xff0c…

調頻信號FM的原理與matlab與FPGA實現

平臺:matlab r2021b,vivado2023.1 本文知識內容摘自《軟件無線電原理和應用》 調頻(FM)是載波的瞬時頻率隨調制信號成線性變化的一種調制方式,音頻調頻信號的數學表達式可以寫為: Fm頻率調制,載波的幅度隨著調制波形…

open()函數——打開文件并返回文件對象

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 open()函數用于打開文件,返回一個文件讀寫對象,然后可以對文件進行相應讀寫操作。 語法參考 open()函數的語法格式如下&…

用Idea運行Python失敗,同級目錄下的模塊無法導入試試這個方法

哈嘍,大家好,我是木頭左! 在Python編程中,經常會遇到需要導入同級目錄下的模塊的情況。然而,有時候在使用IDEA運行Python時,可能會遇到無法導入同級目錄下的模塊的問題。這個問題可能是由于Python解釋器沒有正確識別到同級目錄下的模塊導致的。那么,如何解決這個問題呢?…

【K8s】專題六(2):Kubernetes 穩定性之健康檢查

以下內容均來自個人筆記并重新梳理,如有錯誤歡迎指正!如果對您有幫助,煩請點贊、關注、轉發!歡迎掃碼關注個人公眾號! 目錄 一、基本介紹 二、工作原理 三、探針類型 1、存活探針(LivenessProbe&#x…

docker入門配置

1、創建配置鏡像 由于國內docker連接外網速度慢,采用代理 vi /etc/docker/daemon.json添加以下內容 {"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com","https://dockerproxy.com","https://hub-mirror.c.163.co…

SOA和ESB介紹

SOA(面向服務的架構) 面向服務的架構(Service-Oriented Architecture,SOA)是一種設計理念,用于構建松耦合的、可互操作的、模塊化的服務。在SOA架構中,應用程序被劃分為一系列的服務&#xff0c…

電腦屏幕花屏怎么辦?5個方法解決問題!

“我剛剛打開電腦就發現我的電腦屏幕出現了花屏的情況。這讓我很困惑,我應該怎么解決這個問題呢?求幫助。” 在這個數字時代的浪潮中,電腦早已成為我們生活中不可或缺的一部分。然而,當你正沉浸在緊張的游戲對戰中,或是…

從零到一學FFmpeg:AVCodecContext 結構體詳析與實戰

文章目錄 前言一、函數原型二、功能描述三、使用場景四、使用實例 前言 avio_open是FFmpeg庫中的一個函數,用于打開一個I/O(輸入/輸出)上下文,以便于讀寫文件、網絡流或其他類型的媒體數據源。這個函數是FFmpeg進行文件操作的基礎…

谷歌上搞下來的,無需付費,可以收藏!

在數字化時代,我們越來越依賴于智能設備來獲取信息和知識。中國智謀App正是這樣一款應用,它將中國古代的智慧與謀略書籍帶入了我們的移動設備,讓我們能夠隨時隨地學習和領悟。而且提供文言文的原文和譯文。 軟件下載方式:谷歌上搞…

39.右鍵彈出菜單管理游戲列表

上一個內容:38.控制功能實現 以 ??????? 38.控制功能實現 它的代碼為基礎進行修改 效果圖: 點擊設置之后的樣子 點擊刪除 點擊刪除之后的樣子 實現步驟: 首先添加一個菜單資源,右擊項目資源選擇下圖紅框 然后選擇Menu 然…

【C語言】字符/字符串+內存函數

目錄 Ⅰ、字符函數和字符串函數 1 .strlen 2.strcpy 3.strcat 4.strcmp 5.strncpy 6.strncat 7.strncmp 8.strstr 9.strtok 10.strerror 11.字符函數 12. 字符轉換函數 Ⅱ、內存函數 1 .memcpy 2.memmove 3.memcmp Ⅰ、字符函數和字符串函數 1 .strlen 函數原型:…

《計算機英語》 Unit 6 Internet 互聯網

Section A Internet 互聯網 The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite (TCP/IP) to link several billion devices worldwide. 互聯網是一個全球性的互連計算機網絡系統,使用標準的互聯…

python多線程加速web服務

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、代碼實現?1.引入庫2.讀入數據 總結 前言 提示:這里可以添加本文要記錄的大概內容: 1 提示:以下是本篇文章…

15、Spring~容器啟動過程

15、Spring~容器啟動過程 容器啟動過程AnnotationConfigApplicationContext類的四個構造器:啟動過程詳解無參構造方法refresh()方法prepareRefresh()方法prepareBeanFactory()方法invokeBeanFactoryPostProcessors()方法registerBeanPostProcessors()方法finishBean…

蘋果CMS-V10 搭建教程踩坑,跳過部分驗證

我突發奇想,想要安裝一個CMS 蘋果CMS搭建教程-CSDN博客 然后就有了下面的問題 結論是zip相關依賴未安裝, 通過 apt install php-zip, 重新打開安裝頁面,同樣如此 最后依據某個網站提示,修改 "\\192.168.1.200\root\var\www\html\maccms\application\install\control…

JSR 303全解析:如何在Java項目中實施高效數據校驗

1. JSR 303是什么? JSR 303(Java Specification Request 303),也稱為Bean Validation,是Java中的一個規范,用于定義Java對象的校驗規則。 1.1 JSR 303的主要功能 注解驅動:通過注解直接在Jav…

多家國產大模型提供OpenAI API服務替代方案,谷歌將推出明星網紅AI聊天機器人

ChatGPT狂飆160天,世界已經不是之前的樣子。 更多資源歡迎關注 1、OpenAI終止對中國提供服務 6月25日凌晨,多個用戶收到OpenAI的推送郵件,信中稱,自今年7月9日起,將開始阻止來自非支持國家和地區的API(應…

3.任務的創建與刪除

1.什么是任務? 任務可以理解為進程/線程,創建一個任務,就會在內存開辟一個空間。 任務通常都含有while(1)死循環 2.任務創建與刪除相關的函數 3.CUBEMAX相關配置 編輯一個led1閃爍的任務