我试图编写一个程序,该程序将大小为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))
。不知道它有什么问题。
答案 0 :(得分:2)
我改变了什么:
我为用户添加了一个提示(测试时帮助了我,我确信它也会对你有所帮助)。
我添加了一项检查,以确保用户输入有效的数字字符串(在我们使用int
进行转换之前。
解决您的具体问题:
确保使用1{enter}2{enter}3{enter}
输入数据。因为您将其显示为123
和1 2 3
。
如果您希望能够输入123
等数据,我可以帮助您;只是评论。
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
(包括所以我占用了总页面空间的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))))