python輸入多行的方法總結(jié)
一、概述
在Python里,我們有時候會做需要多行輸出的程序。
例如:
1、點餐系統(tǒng) 不停地問:你要點什么食物?
2、文本編輯 不停地輸入文字(僅限IDLE等Python自帶編輯器 )
我們Python中有一種輸入語句 : input
但是,它只能單行輸入
所以呢,我們就要通過Python的其他語句來實現(xiàn)多行輸入
二、代碼部分
1、已知行數(shù)多行輸出
我們現(xiàn)在在已知行數(shù)的情況下多行輸入,就很好辦。
首先我們要獲取行數(shù):
lines = int(input("請輸入您要輸入的行數(shù)"))
之后就第一行、第二行、第三行……第n行這樣輸入就行了。我們可以用for循環(huán)解決。
for i in range(lines):
text += input("輸入內(nèi)容") + '\n' #引入一個text變量儲存數(shù)據(jù)
最后的完整代碼:
text = ''
lines = int(input("請輸入您要輸入的行數(shù)"))
for i in range(lines):
text += input("輸入內(nèi)容") + '\n'
print(text)
輸出:

2、未知行數(shù)多行輸出
當(dāng)我們在輸入多行文本的時候,因為我們不知道要輸入多少行,所以如果再按已知行數(shù)多行輸入的方法的話,有可能行數(shù)就會輸少了。所以,未知行數(shù)多行輸入的方法的重要性自然而然地也就出來了。
未知行數(shù)多行輸入需要有一個終止標(biāo)志,比如說輸入“stop”就終止;輸入“停”就終止;一換行就終止……這樣才可以讓程序知道:嗯,寫完了。
這次我們使用換行來表示終止。
首先,我們需要一個提示語句,在input()語句中我們寫在括號里,這次我們直接用print語句輸出。
print("開始寫文章")然后,因為我們要不停地讓他輸入,所以要用一個死循環(huán)。再不停執(zhí)行input語句。注意,因為要不停輸入內(nèi)容,所以input語句中必須為空,如果填上輸出語句,程序?qū)⒉煌]敵鎏崾菊Z。而提示語因為只輸出一遍就夠了,所以我們在前面的代碼需要提前用print語句輸出出來。 之后再加個判斷,如果輸入的內(nèi)容為空,則用break語句跳出循環(huán)。
while True:
line_text = input()
if line_text == '':
break
text += line_text + '\n'
最后的完整代碼:
text = ''
line_text = ''
print("開始寫文章")
while True:
line_text = input()
if line_text == '':
break
text += line_text + '\n'
print(text)
輸出:

三、拓展
1、點餐系統(tǒng)
def add_food(food_dict):
add_foods = []
money = 0
print_i = 0
foods = food_dict.keys()
for i in food_dict:
print_i += 1
print("%d、%s%s元" % (print_i, i, food_dict[i]))
while True:
if len(add_foods) == 0:
want = input("你想要食物")
if want not in foods:
print("沒有這個食物")
elif len(add_foods) != 0:
want = input("還要食物輸入食物名稱,不要就輸入除食物名稱外任意字符。你想要")
if want not in foods:
break
for k in foods:
if want == k:
add_foods.append(want)
money += food_dict[k]
print("總金額:%d" % money)
return money, add_foods
foods = {"香辣無骨雞爪":5,
"老八秘制小漢堡":10,
"絲襪奶茶":5,
"狗澆尿":7,
"王致和臭豆腐":7,
"鯡魚罐頭":10}
money, food_list = add_food(foods)
print("你點了", end = '')
for food in food_list:
if food_list.index(food) == len(food_list) - 1:
print(food + '。')
else:
print(food + '、', end = '')
輸出:

2、文本編輯
import os
file_name = ''
replace = ''
def add_diary(name):
input_text = ''
print("開始寫日記:")
while True:
text = input()
if len(text) == 0:
break
input_text += text + '\n'
with open(name, 'w') as f:
f.write(input_text)
f.close()
while file_name == '':
file_name = input("輸入一個你想要的文件名")
if os.path.isfile(file_name + ".txt") == True:
replace = input("文件夾中有此文件,是否替換?")
if replace == '否':
file_name = ''
add_diary(file_name + '.txt')
print(open(file_name + '.txt', 'r').read())
輸出:

其他方法:
方法1:利用異常處理機制實現(xiàn)
lines=[]
while True:
try:
lines.append(input())
except:
break
print(lines)實際運行時,可以輸入多行,當(dāng)輸入最后一行并回車后,按組合鍵ctrl+D,表示EOF,即End of File、文件尾的意思。此時,input()函數(shù)會遇到EOF的異常。Python的異常處理機制將捕獲到此異常,執(zhí)行except部分的語句,此語句為break,因此,立即跳出while循環(huán)。這正好滿足了我們的需要。
例如,輸入:
12 345 3.14159回車 I am a student.回車 Hello, world!回車
在集成開發(fā)環(huán)境中運行時,請按ctrl+D組合鍵結(jié)束多行輸入。如果在Windows命令行下用"python 源代碼文件名.py”方式運行時,請按ctrl+Z組合鍵結(jié)束多行輸入。
輸出結(jié)果如下:
['12 345 3.14159', 'I am a student.', 'Hello, world!']
方法二:利用標(biāo)準(zhǔn)輸入文件對象sys.stdin的readlines()函數(shù)實現(xiàn)
因為鍵盤是標(biāo)準(zhǔn)輸入設(shè)備,計算機操作系統(tǒng)將鍵盤也是當(dāng)做文件來對待的,其實計算機操作系統(tǒng)將包括鍵盤顯示器鼠標(biāo)打印機等在內(nèi)的各種外圍設(shè)備都當(dāng)做文件來對待。Python中與鍵盤對應(yīng)的文件對象是sys.stdin,因此可以利用sys.stdin.readlines()函數(shù)來實現(xiàn)讀取多行文本,一直到遇到文件尾即EOF為止。
import sys lines=sys.stdin.readlines() print(lines)
輸入同上,
輸出如下:
['12 345 3.14159\n', 'I am a student.\n', 'Hello, world!\n']
可以看出,這種方式2與方式1的輸出結(jié)果有細微差別,每行末尾有'\n'字符(即回車符)。
以上就是python輸入多行的方法總結(jié)的詳細內(nèi)容,更多關(guān)于python輸入多行的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 更快進行探索性數(shù)據(jù)分析的四個方法
今天我給大家分享幾種更快的探索性數(shù)據(jù)分析方法,它們可以進一步加速 EDA。 我們以一個學(xué)生考試成績的例子,創(chuàng)建一個如下所示的 DataFrame 并繼續(xù)操作。歡迎收藏學(xué)習(xí),喜歡點贊支持2021-11-11
Python使用Tkinter實現(xiàn)轉(zhuǎn)盤抽獎器的步驟詳解
這篇文章主要介紹了Python使用Tkinter實現(xiàn)轉(zhuǎn)盤抽獎器,,本文分場景通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01
pytorch中tensor轉(zhuǎn)換為float的實現(xiàn)示例
本文主要介紹了pytorch中tensor轉(zhuǎn)換為float,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫
這篇文章主要為大家介紹了python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
Python結(jié)合百度語音識別實現(xiàn)實時翻譯軟件的實現(xiàn)
這篇文章主要介紹了Python結(jié)合百度語音識別實現(xiàn)實時翻譯軟件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

