python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python输入多行

python输入多行的方法总结

作者:hakesashou

Python中的Input()函数在输入时,遇到回车符,那么一次输入就结束了,这不能满足输入多行文本并且行数也不确定的情形,当然输入空行也是允许的,本文给大家总结了python输入多行的方法,需要的朋友可以参考下

一、概述

在Python里,我们有时候会做需要多行输出的程序。

例如:

1、点餐系统 不停地问:你要点什么食物?

2、文本编辑 不停地输入文字(仅限IDLE等Python自带编辑器 )

我们Python中有一种输入语句 : input

但是,它只能单行输入

所以呢,我们就要通过Python其他语句来实现多行输入

二、代码部分

1、已知行数多行输出

我们现在在已知行数的情况下多行输入,就很好办。
首先我们要获取行数:

lines = int(input("请输入您要输入的行数"))

之后就第一行、第二行、第三行……第n行这样输入就行了。我们可以用for循环解决。

for i in range(lines):
    text += input("输入内容") + '\n'    #引入一个text变量储存数据  

最后的完整代码:

text = ''
lines = int(input("请输入您要输入的行数"))
for i in range(lines):
    text += input("输入内容") + '\n'
print(text)

输出:

输出内容

2、未知行数多行输出

当我们在输入多行文本的时候,因为我们不知道要输入多少行,所以如果再按已知行数多行输入的方法的话,有可能行数就会输少了。所以,未知行数多行输入的方法的重要性自然而然地也就出来了。

未知行数多行输入需要有一个终止标志,比如说输入“stop”就终止;输入“停”就终止;一换行就终止……这样才可以让程序知道:嗯,写完了。
这次我们使用换行来表示终止。
首先,我们需要一个提示语句,在input()语句中我们写在括号里,这次我们直接用print语句输出。

print("开始写文章")

然后,因为我们要不停地让他输入,所以要用一个死循环。再不停执行input语句。注意,因为要不停输入内容,所以input语句中必须为空,如果填上输出语句,程序将不停输出提示语。而提示语因为只输出一遍就够了,所以我们在前面的代码需要提前用print语句输出出来。 之后再加个判断,如果输入的内容为空,则用break语句跳出循环。

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、点餐系统

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:利用异常处理机制实现

lines=[]
while True:
    try:
        lines.append(input())
    except:
        break 
print(lines)

实际运行时,可以输入多行,当输入最后一行并回车后,按组合键ctrl+D,表示EOF,即End of File、文件尾的意思。此时,input()函数会遇到EOF的异常。Python的异常处理机制将捕获到此异常,执行except部分的语句,此语句为break,因此,立即跳出while循环。这正好满足了我们的需要。

例如,输入:

12 345 3.14159回车
I am a student.回车
Hello, world!回车

在集成开发环境中运行时,请按ctrl+D组合键结束多行输入。如果在Windows命令行下用"python 源代码文件名.py”方式运行时,请按ctrl+Z组合键结束多行输入。

输出结果如下:

['12 345 3.14159', 'I am a student.', 'Hello, world!']

方法二:利用标准输入文件对象sys.stdin的readlines()函数实现

因为键盘是标准输入设备,计算机操作系统将键盘也是当做文件来对待的,其实计算机操作系统将包括键盘显示器鼠标打印机等在内的各种外围设备都当做文件来对待。Python中与键盘对应的文件对象是sys.stdin,因此可以利用sys.stdin.readlines()函数来实现读取多行文本,一直到遇到文件尾即EOF为止。

import sys
lines=sys.stdin.readlines()
print(lines)

输入同上,

输出如下:

['12 345 3.14159\n', 'I am a student.\n', 'Hello, world!\n']

可以看出,这种方式2与方式1的输出结果有细微差别,每行末尾有'\n'字符(即回车符)。

以上就是python输入多行的方法总结的详细内容,更多关于python输入多行的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文