如何在不定义任何限制的情况下获取 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
我认为处理这个问题的最好方法是使用错误处理,即 try
和 except
块,请参考下面的代码。
while True:
try:
n = input()
# Your Logic or code
except:
break
现在,问题是我应该从用户那里获取未知数量的输入,比如在一个 运行 他可以输入 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
我认为处理这个问题的最好方法是使用错误处理,即 try
和 except
块,请参考下面的代码。
while True:
try:
n = input()
# Your Logic or code
except:
break