我必须为一个类编写代码,其中我必须定义一个函数,并且参数来自input()。输入将始终是一个字符串,数字和字母之间必须紧跟其后,形式为:“” 5 2 S 2 333 A“”。根据两个数字后面的字母,我必须对前两个数字使用特定的功能。为此,我通过字符串输入并将每个元素添加到列表中,以便更轻松地使用它们。我的问题是,最后一个元素的第一个和最后一个元素始终以反斜杠开头/结尾,从而使得无法对数字进行int()操作,而我也不知道为什么以及如何摆脱它们。这是我的代码,如果您知道一种更简单的方法,我将不胜感激,但是我主要想知道反斜杠的来源...
def addition(a,b):
return a + b
def soustraction(a,b):
return a - b
def multiplication(a,b):
return a * b
if __name__ == '__main__':
c = input() #here comes the string input
ma_liste = [] #the list where i want to add the elements of my string
for i in range(0, len(c)): #checking each element of the string
if i == 0:
for j in range(len(c)):
if " " in c[i:j+2]:
ma_liste.append(c[i:j+1])
break
else:
for j in range(i,len(c)): #check if there is a space to know where the number ends
if c[i:j+1] == c[i-1:j+2].strip():
ma_liste.append(c[i:j+1])
break
for e in range(len(ma_liste)): #going through the elements of my list
if ma_liste[e].isdigit():
int(ma_liste[e])
if ma_liste[e].isalpha():
if ma_liste[e] == "S":
soustraction(int(ma_liste[e-2]),int(ma_liste[e-1]))
if ma_liste[e] == "A":
addition(int(ma_liste[e-2]),int(ma_liste[e-1]))
if ma_liste[e] == "M":
multiplication(int(ma_liste[e-2]),int(ma_liste[e-1]))
答案 0 :(得分:1)
欢迎来到SO。似乎这里的问题是当您直接读取数据时,行'\n'
的末尾被附加。可以将整个ndarray
转换为使用numpy.asarray
dtype=int.
,这将解决您的问题。希望能帮助到你。 :)
import numpy as np
a = ['1','2','3\n']
print(a)
b = np.asarray(a,dtype=np.int)
print(b)
输入:['1','2','3 \ n']
输出:[1 2 3]