简体   繁体   English

将多行输入存储到字符串中 (Python)

[英]Store multi-line input into a String (Python)

Input:输入:

359716482
867345912
413928675
398574126
546281739
172639548
984163257
621857394
735492861

my code :我的代码:

print("Enter the array:\n")   
userInput = input().splitlines()
print(userInput)

my problem here is that, userInput only takes in the first line value but it doesn't seem to take in values after the first line?我的问题是, userInput只接受第一行值,但似乎没有接受第一行之后的值?

You can use readlines() method of file objects:您可以使用文件对象的readlines()方法:

import sys
userInput = sys.stdin.readlines()

You can easily create one, using generators.您可以使用生成器轻松创建一个。 Here is one such implementation.这是一个这样的实现。 Note you can either press a blank return or any Keyboard Interrupt to break out of the inputloop请注意,您可以按空白返回或任何键盘中断来跳出输入循环

>>> def multi_input():
    try:
        while True:
            data=raw_input()
            if not data: break
            yield data
    except KeyboardInterrupt:
        return


>>> userInput = list(multi_input())
359716482
867345912
413928675
398574126

>>> userInput
['359716482', '867345912', '413928675', '398574126']
>>> 

Each input() will only accept a single line.每个input()只接受一行。 Strategies around this:围绕这个的策略:

  • You can repeatedly call input() in a loop until it receives a blank line您可以在循环中重复调用input()直到它收到一个空行
  • You can repeatedly call input() in a loop until the user does ctrl-D on a UNIX-like OS, at which point EOFError will be raised which you can catch您可以在循环中重复调用input()直到用户在类 UNIX 操作系统上执行 ctrl-D ,此时将引发 EOFError ,您可以捕获
  • Read the data from a text file or other more appropriate source than stdin从文本文件或其他比标准输入更合适的来源读取数据

Hi there,你好呀,

You could try this approach I made based on your request.您可以尝试我根据您的要求制定的这种方法。 I put some comments on the code to explain what I was trying to achieve.我在代码上添加了一些注释来解释我想要实现的目标。 Glad to have the opportunity to get into some python code, I am new to this language but I totally love it!很高兴有机会学习一些 Python 代码,我是这门语言的新手,但我非常喜欢它!

def multi_input():
    try:
        #This list will hold all inputs made during the loop
        lst_words = []
        # We will store the final string results on this variable
        final_str ='' 
        #Let's ask first the user to enter the amount of fruits
        print("Please Type in your List of Fruits. \n Press << Enter >> to finish the list:")
        
        #Loop to get as many words as needed in that list
        while True:
            #Capture each word o'er here, pals!
            wrd = input()
            # If word is empty, meaning user hit ENTER, let's break this routine
            if not wrd: break
            # if not, we keep adding this input to the current list of fruits
            else:
                lst_words.append(wrd)

#What if ther user press the interruption shortcut? ctrl+D or Linus or MacOS equivalent?
    except KeyboardInterrupt:
        print("program was manually terminated by the user.")
        return
#the time has come for us to display the results on the screen
    finally:
        #If the list has at least one element, let us print it on the screen
        if(len(lst_words)>0):
            #Before printing this list, let's create the final string based on the elements of the list
            final_str = '\n'.join(lst_words)
            print('You entered the below fruits:')
            print(final_str)
        else:
            quit
#let us test this function now! Happy python coding, folks!
multi_input()
lines = []
while True:
s =input("Enter the string or press ENTER for Output: ")
if s:
    lines.append(s)
else:
    break;

print("OUTPUT: ")
for i in lines:
print (i)

Input:
359716482
867345912
413928675
398574126
546281739
172639548
984163257
621857394
735492861

Output:
359716482
867345912
413928675
398574126
546281739
172639548
984163257
621857394
735492861

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM