一个字符串输入:由'分隔的Ints '需要反向打印数组

时间:2016-05-06 03:10:45

标签: python arrays io reverse

所以我被传递了一串整数。第一个表示我正在通过的整数,其余的是正在通过的整数。

传递的字符串i的示例:4 1 2 3 4 预期产出:4 3 2 1

这是我写的

import sys

n = int(raw_input().strip())
arr = map(int,raw_input().strip().split(' '))

arr.reverse()
print(arr)

如果我键入4然后输入,然后输入1 2 3 4,它会起作用,但如果我键入4 1 2 3 4然后按回车键我输入此错误:

Traceback (most recent call last):
   *File name removed by me* line 4, in <module>
n = int(raw_input().strip())
ValueError: invalid literal for int() with base 10: '4 1 2 3 4'

我理解错误...它期望n = int(raw_input(。。strip())的单个基数为10的数字不是由空格分隔的数字串。我试图改变我的代码几乎完全否定了第一个数字......它甚至没有必要我不会想到蟒蛇去。有人可以帮忙吗?我觉得我只是一个小小的调整。

2 个答案:

答案 0 :(得分:1)

  

我试图改变我的代码,几乎完全否定了第一个数字......它甚至没有必要我不认为就python而言。

你是对的,你可以将列表从第二个元素切割到最后一个元素,忽略第一个元素。

arr = map(int,raw_input().strip().split(' ')[1:])

答案 1 :(得分:0)

您也可以使用下面的列表和循环:

string = input("Enter a string: ")
values = string.split(" ")
reverse = list()

for i in range(len(values)-1, 0, -1):
    reverse.append(values[i])

for item in reverse:
    print (item,end=" ")

如下工作:

>>> 
 RESTART: C:/Python 3.5/test.py 
Enter a string: 3 2 3 5
5 3 2 
>>> 

由于程序中不需要n,您还可以修改程序并删除错误行,如下所示:

import sys

arr = map(int,raw_input().strip().split(' '))

arr.reverse()
arr = arr[:-1]
print(arr)

其输出:

>>> ================================ RESTART ================================
>>> 
4 0 1 2 3
[3, 2, 1, 0]
>>>