如果第一个元素是一个数字,则输出应该是一个数字列表。我试图删除列表b中所有的非数字元素。
示例-输入:1 2 3 4输出:[3、4、5](2+1、3+1、4+1)
输入:1 2 B 4输出:[3,5](2+1,B被吹扫,4+1)
输入:1 × 2 × 3输出:继承人无效
linha = input()
a = linha.split()
b = [x for x in (a[1:]) if type(x)==int]
b = [eval(x) for x in b]
c = eval(a[0])
d = []
d.append(c)
f = d*len(b)
def soma():
if type(c)!= int: return print("Sucessor invalido")
else: return list(map(lambda x, y: x + y, b, f))
g = soma()
g
〉此条件始终返回空列表
if type(x)==int
对不起,如果我不清楚,我最近开始学习
3条答案
按热度按时间snz8szmq1#
两件事:
input
的结果总是字符串,当你拆分字符串时,你得到的是更多的字符串,所以即使那个字符串是'7'
,它也是字符串7,而不是整数7。1.如果您要检查对象是否属于型别,请使用
isinstance(x,int)
,而不要使用type(x)==int
。为了完成看起来像你正在做的事情,我不知道你是否可以用列表理解来得到它,因为你可能需要一个
try:...except:...
块,就像这样。brvekthn2#
在检查它们是否是有效的数字值之后,需要将由行分隔的数字转换为整数,如下所示:
这是因为默认情况下,您的输入是字符串,而
split()
只是字符串列表lb3vh1jj3#
您的输入是
string
,您需要将其转换为int
,然后进行计算以将其追加到新列表中。函数应该首先使用
str.islpha()
方法检查索引0。如果它是一个字母表,则返回无效输入。除了在迭代输入列表时使用try。如果某个元素不能被转换为int,它将继续到下一个索引。
输出量: