具有用户输入的数组并反向打印出来

时间:2017-11-22 09:01:50

标签: python arrays python-3.x

我试图编写一个程序,该程序将大小为N的数组作为输入,并以相反的顺序将输出作为数组。

E.g。

3
123

应该产生321

or 4
   1210 

应该产生0121.

我目前的代码:

num_array = [] 
num = input()
print()
for i in range(int(num)): 
    n = input()
    num_array.append(int(n))
print(num_array[::-1])

但我在ValueError: invalid literal for int() with base 10: ''行上收到错误num_array.append(int(n))。不知道它有什么问题。

3 个答案:

答案 0 :(得分:2)

我改变了什么:

  1. 我为用户添加了一个提示(测试时帮助了我,我确信它也会对你有所帮助)。

  2. 我添加了一项检查,以确保用户输入有效的数字字符串(在我们使用int进行转换之前。

  3. 解决您的具体问题:

    • 确保使用1{enter}2{enter}3{enter}输入数据。因为您将其显示为1231 2 3

    • 如果您希望能够输入123等数据,我可以帮助您;只是评论。

  4. 代码

    num_array = [] 
    num = input("Please enter number of elements: ")
    print('')
    for i in range(int(num)): 
        n = input(f"Element[i]: ")
        if not n.isnumeric():
            print("Please enter an integer")
            raise "You failed to enter an integer"
        num_array.append(int(n))
    print(num_array[::-1])
    

    如果要使用空格

    num_array = ''.join(input("Please enter your data: ").split())[::-1]
    print(num_array)
    

    程序运行:

    Input<< Please enter your data: 5 2 1 3
    Output>> 3125
    

    如果您不想使用空格

    num_array = input(f"Please enter your data: ")[::-1]
    print(num_array)
    

    程序运行:

    Input<< Please enter your data: 5123
    Output>> 3215
    

    Noob编者的解释

    (包括所以我占用了总页面空间的90%)。

    根据终端转储存在的问题:

    In [6]: %cpaste
    Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
    :def abc():
        num_array = [] 
        num = input()
        print()
        for i in range(int(num)): 
            n = input()
            num_array.append(int(n))
        print(num_array[::-1])       
    :--
    
    In [7]: abc()
    2
    
    12                  // this is where enter is pressed
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-7-79c8afb7007d> in <module>()
    ----> 1 abc()
    
    <ipython-input-6-f0dc94278ce8> in abc()
          5     for i in range(int(num)):
          6         n = input()
    ----> 7         num_array.append(int(n))
          8     print(num_arra)
    
    ValueError: invalid literal for int() with base 10: ''
    
    In [8]: 
    

    ----正确实施---

    In [9]: def abc():
       ...:     num_array = [] 
       ...:     num = input()
       ...:     print()
       ...:     for i in range(int(num)): 
       ...:         n = input()
       ...:         num_array.append(int(n))
       ...:     print(num_array[::-1])
       ...:     
    
    In [10]: abc()
    2
    
    1                   //input in separate lines
    2
    [2, 1]
    
    In [11]: 
    

答案 1 :(得分:1)

你正在向{int}投射n,所以我想你输入的东西不是数字。

为了修复它,你可以放弃铸造。 num_array.append(n)这应该是全部(或确保输入仅包含数字)。

答案 2 :(得分:0)

目前尚不清楚,您对第一个输入的预期用途是什么。是否要输入数组的总长度,即它包含的元素总数,或者是否要指定输入的长度?

如果要指定数组的总长度,则为&#39; 1&#39;对于两个输入&#39; 123&#39;和&#39; 1210&#39; (因为您输入了一个字符串),那么您的异常可能是由另一个空输入(按下返回)引起的,该输入无法转换为整数。

如果您想知道输入的长度,例如&#39; 4&#39;输入&#39; 1210&#39;或者&#39; 3&#39;对于输入&#39; 123&#39;,您可以使用len(n)(其中n = input()

假设您尝试指定输入数字的长度(这不是必需的),那么适用于您的示例的代码可能如下所示:

num_array = list(input())
print(''.join(map(str, (num_array[::-1]))))

或使用reversed

num_array = list(input())
print(''.join(map(str, reversed(num_array))))