Получаем список чисел в качестве входных данных от пользователя
Я пытался использовать raw_input()
чтобы получить список чисел, однако с кодом
numbers = raw_input()
print len(numbers)
вход [1,2,3]
дает результат 7
, Так что я думаю, он интерпретирует ввод как строку. Есть ли какой-то прямой способ сделать из этого список? Может быть, я мог бы использовать re.findall
извлечь целых чисел, но если возможно, я предпочел бы использовать более подходящие для Python решение.
16 ответов
В Python 3.Икс, используй это.
a = [int(x) for x in input().split()]
пример
>>> a = [int(x) for x in input().split()]
3 4 5
>>> a
[3, 4, 5]
>>>
гораздо проще разобрать список чисел, разделенных пробелами, а не пытаться разобрать синтаксис Python:
Python 3:
s = input()
numbers = list(map(int, s.split()))
Python 2:
s = raw_input()
numbers = map(int, s.split())
eval(a_string)
вычисляет строку как код Python. Очевидно, что это не особенно безопасно. Вы можете получить более безопасную (более ограниченную) оценку, используя
можно использовать .split()
numbers = raw_input().split(",")
print len(numbers)
Это все равно даст вам строки, но это будет список строк.
Если вам нужно сопоставить их с типом, используйте понимание списка:
numbers = [int(n, 10) for n in raw_input().split(",")]
print len(numbers)
если вы хотите иметь возможность войти в любой Python тип и он отображается автоматически и Вы доверяете своим пользователям неявно затем вы можете использовать eval
другим способом может быть использование for-loop для этого. Предположим, вы хотите, чтобы пользователь ввел 10 чисел в список с именем "memo"
memo=[]
for i in range (10):
x=int(input("enter no. \n"))
memo.insert(i,x)
i+=1
print(memo)
a=[]
b=int(input())
for i in range(b):
c=int(input())
a.append(c)
приведенные выше фрагменты кода-простой способ получить значения от пользователя.
num = int(input('Size of elements : '))
arr = list()
for i in range(num) :
ele = int(input())
arr.append(ele)
print(arr)
вы можете передать строковое представление списка в 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 по мере необходимости.
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
вы все еще можете использовать свой код, но вам нужно будет немного его настроить. Вы можете использовать код для python 2.9 или меньше:
number = raw_input()
print number
Если вы используете python 3 или выше, вы можете использовать код:
number = input()
print number
вам просто нужно ввестиraw_input().split()
и по умолчанию split () - это то, что значения разделяются пробелами.