如何在不定义任何限制的情况下获取 python 中的任意数量的输入?

How to take any number of inputs in python without defining any limit?

现在,问题是我应该从用户那里获取未知数量的输入,比如在一个 运行 他可以输入 10 个术语,在另一个 运行 他可以输入 40 个。并且我不能要求用户最初输入 n 的值,以便我可以 运行 范围循环并开始将输入存储在列表中。如果我能以某种方式做到这一点,那么我已经创建了循环,但事实并非如此。那么,问题是如何为用户定义端点?或者如何将未知数量的参数传递给函数?

def fibi(n):
    while n<0 or n>=50:
        print "Enter value of n greater than 0 but less than 50"
        n = int(raw_input())
    if n==0:
        return n
    else:
        a, b = 0, 1
        for i in range(n):
            a, b = b, a + b
    return a

主调用函数开始

n =[]
????
//This loop is for calling fibi function and printing its output on each diff line
for i in n:
    print (fibi(n[i]))

示例 Input:each 条目应换行

1
2
3
4
5
.
.
.
n

示例输出

1
1
2
3
5

我猜 n 是一个作为命令行参数传递的列表,如果是这样那么你可以尝试做

import sys

noOfArgs = len(sys.argv)
n = sys.argv

这里有一个 link 展示了如何解析命令行参数。

这是从用户读取许多整数输入的方法:

inputs = []
while True:
    inp = raw_input()
    if inp == "":
        break
    inputs.append(int(inp))

如果你想传递未知数量的参数给函数,你可以使用*args:

def function(*args):
    print args
function(1, 2, 3)

这将打印 (1, 2, 3).

或者您可以为此目的使用列表:

def function(numbers):
    ...
function([1, 2, 3])
from sys import stdin 
lines = stdin.read().splitlines()
print(lines)

输入

0
1
5
12
22
1424
..
...

输出

['0', '1', '5', '12', '22', '1424' .. ...]
l=[]
while(True):
        try:
            a=input()
        except Exception as e:
            break
        l.append(int(a))
print(*l)

我猜这就是您要找的东西

inputs = []
while True:
    sval = input("Enter a number: ")
    if sval == 'done' :
        break
    try:
        fval = float(sval)
    except:
        print('Invalid input')
        continue
    try:
        inputs.append(int(sval))
    except:
        inputs.append(float(sval))
print(inputs)

argv 是传递给脚本的输入列表。第一个参数 argv[1] 是脚本的名称。之后的内容可以被视为传递给脚本的参数。您可以简单地使用下面的脚本来获取输入并将它们存储在列表中。

import sys
inputs = []
for item in sys.argv[1:]:
    inputs.append(item)
print(inputs)

在大多数情况下,抛出的错误是“EOFError : EOF while reading a line

如果我们处理了这个错误,我们的工作就完成了!

while True:
    try:
        var = input()
        # do your task 

    except EOF as e:
        pass

我认为处理这个问题的最好方法是使用错误处理,即 tryexcept 块,请参考下面的代码。

while True:
try:
    n = input()
    
    # Your Logic or code
    
except:
    break