获取用户输入的数字列表
我尝试使用raw_input()
获取数字列表,但是使用代码
numbers = raw_input() print len(numbers)
输入[1,2,3]
给出了7
的结果,所以我猜想它将输入解释为它是一个字符串。 有什么直接的方法可以列出它? 也许我可以使用re.findall
来提取整数,但如果可能的话,我宁愿使用更多的Pythonic解决方案。
在Python 3.x中,使用这个。
a = [int(x) for x in input().split()]
例
>>> a = [int(x) for x in input().split()] 3 4 5 >>> a [3, 4, 5] >>>
s = raw_input() numbers = map(int, s.split())
并添加由空格分隔的数字。
在Python3中map
不再返回一个list
,所以我们需要把它包装在一个list
调用中 。
s = input() numbers = list(map(int, s.split()))
eval(a_string)
将字符串评估为Python代码。 显然这不是特别安全。 您可以使用ast
模块中的literal_eval
函数来获得更安全(更受限制)的评估。
raw_input()
在Python 2.x中被调用,因为它是原始的,而不是“解释”的输入。 input()
解释输入,即相当于eval(raw_input())
。
在Python 3.x中, input()
执行raw_input()
用来做的事情,如果这是你想要的(例如eval(input())
),你必须手动计算内容。
你可以使用.split()
numbers = raw_input().split(",") print len(numbers)
这仍然会给你的字符串,但它会是一个字符串列表。
如果您需要将它们映射到某个类型,请使用列表理解:
numbers = [int(n, 10) for n in raw_input().split(",")] print len(numbers)
如果你想能够输入任何 Python类型并自动映射, 并且信任你的用户,那么你可以使用eval
另一种方法可能是为这个使用for循环。 假设你想要用户输入10个数字到一个名为“备忘录”
memo=[] for i in range (10): x=int(input("enter no. \n")) memo.insert(i,x) i+=1 print(memo)
尝试这个:
numbers = raw_input() numberlist = list(numbers)
您可以将列表的字符串表示形式传递给json:
import json str_list = raw_input("Enter in a list: ") my_list = json.loads(str_list)
用户像在python中那样输入列表: [2, 34, 5.6, 90]
答案是微不足道的。 尝试这个。
x=input()
假设[1,3,5,'aA','8as']
作为输入
print len(x)
这给出了5的答案
print x[3]
这给了'aA'
你可以使用这个函数(只有int类型);)
def raw_inputList(yourComment): listSTR=raw_input(yourComment) listSTR =listSTR[1:len(listSTR)-1] listT = listSTR.split(",") listEnd=[] for caseListT in listT: listEnd.append(int(caseListT)) return listEnd
这个函数返回你的列表(用int类型)!
例如:
yourList=raw_inputList("Enter Your List please :")
如果你输入
"[1,2,3]"
然后
yourList=[1,2,3]
试试这个,
n=int(raw_input("Enter length of the list")) l1=[] for i in range(n): a=raw_input() if(a.isdigit()): l1.insert(i,float(a)) #statement1 else: l1.insert(i,a) #statement2
如果列表的元素只是一个数字,语句1将被执行,如果它是一个字符串,则语句2将被执行。 最后,你将有一个清单l1你所需要的。
a=[] b=int(input()) for i in range(b): c=int(input()) a.append(c)
上面的代码片段是从用户获取值的简单方法。
k = [] i = int(raw_input('enter the number of values in the list ')) l = 0 while l < i: p = raw_input('enter the string ') k.append(p) l= l+1 print "list is ", k
你只需要输入raw_input().split()
和默认的split()就是这个值被一个空格分开。
尝试这个
numbers = raw_input() a = numbers.split(" ")
你仍然可以使用你的代码,但你需要调整一下。 你可以使用Python 2.9或更低版本的代码:
number = raw_input() print number
如果你使用python 3或更高版本,你可以使用代码:
number = input() print number