大家好,我想做一个程序,接受两个用户输入。第一个是标量,第二个是提供的列表或数组。数字将是一个乘法器,用于缩放数组,输出将是乘法数组
import numpy as np
a = [1, 3, 5, 7, 9]
b = [2, 4, 6, 8, 10]
另外,为了方便用户,如果没有输入数字,我希望默认标量为1
我很抱歉缺少代码,但我尝试过的一切都没有成功
我知道使用
x, y = input().split()
将允许用户输入两个输入,例如
3 a
或
5.5 b
这就是我希望输入的方式。然而,虽然数字可以转换为浮点,但我不知道如何将字母a或b从字符串解释为它们的数组名
float(x)*np.array(y)
我认为以下错误是由于数据类型不匹配造成的
float(x)*np.array(y)
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')
如果有人能提供解决方案,或者有比您的意见更好的方法,我们将不胜感激。多谢各位
有两种解决方案,一种是更干净
第一个(dirty)是使用
eval
,因为用户作为输入传递的a
或b
将作为字符串计算,而不是作为名为a
的变量计算。 因此,您必须返回float(x) * eval(y)
但是
eval
的使用受到极大的阻碍我认为更简洁的方法是在
dict
中声明预定义数组,并查找用户提供的密钥,如下所示:注意:在原始代码中,
a = [1, 3, 5, 7, 9]
定义了一个列表。而且不能将float
和列表相乘。你最终可以乘和int
和一个列表,但这不是你想要的,它会复制你的列表:)我想这有帮助! 这也可以处理用户没有指定乘数的情况,然后它会自动默认为1
相关问题 更多 >
编程相关推荐