多个用户输入、默认输入和字符串到数组的转换
Multiple User-inputs, Default input, and String-to-Array Conversion
大家好我想制作一个接受两个用户输入的程序。第一个是标量,第二个是提供的列表或数组。该数字将是一个乘数,用于缩放数组,输出将是相乘后的数组。
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')
如果有人能提供解决方案,或者有比您的意见更好的方法,我们将不胜感激。谢谢。
您的问题有两种解决方案,一种更清洁。
第一个(脏)在于使用 eval
,因为 a
或 b
您的用户将作为输入传递,因为输入将被评估为字符串,而不是您的变量命名为 a
。
所以你必须 return float(x) * eval(y)
.
但强烈建议不要使用 eval
。
我认为更简洁的方法是在 dict
中声明您的预定义数组并查找用户提供的密钥:
import numpy as np
arrays = {
"a": np.array([1, 3, 5, 7, 9]),
"b": np.array([2, 4, 6, 8, 10])
}
coefficient, array_name = input().split()
print(float(coefficient) * arrays[array_name])
注意:在您的原始代码中,a = [1, 3, 5, 7, 9]
定义了一个列表。而且您不能将 float
和列表相乘。你最终可以乘以 int
和一个列表,但这不是你想要的,它会复制你的列表:)
我想这有帮助!
这也处理了用户未指定乘数的情况,然后它自动默认为 1
import numpy as np
a = np.array([1, 3, 5, 7, 9])
b = np.array([2, 4, 6, 8, 10])
y,*x = input().split()
if not x:
x=[1]
print(float(x[0])*eval(y))
大家好我想制作一个接受两个用户输入的程序。第一个是标量,第二个是提供的列表或数组。该数字将是一个乘数,用于缩放数组,输出将是相乘后的数组。
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')
如果有人能提供解决方案,或者有比您的意见更好的方法,我们将不胜感激。谢谢。
您的问题有两种解决方案,一种更清洁。
第一个(脏)在于使用 eval
,因为 a
或 b
您的用户将作为输入传递,因为输入将被评估为字符串,而不是您的变量命名为 a
。
所以你必须 return float(x) * eval(y)
.
但强烈建议不要使用 eval
。
我认为更简洁的方法是在 dict
中声明您的预定义数组并查找用户提供的密钥:
import numpy as np
arrays = {
"a": np.array([1, 3, 5, 7, 9]),
"b": np.array([2, 4, 6, 8, 10])
}
coefficient, array_name = input().split()
print(float(coefficient) * arrays[array_name])
注意:在您的原始代码中,a = [1, 3, 5, 7, 9]
定义了一个列表。而且您不能将 float
和列表相乘。你最终可以乘以 int
和一个列表,但这不是你想要的,它会复制你的列表:)
我想这有帮助! 这也处理了用户未指定乘数的情况,然后它自动默认为 1
import numpy as np
a = np.array([1, 3, 5, 7, 9])
b = np.array([2, 4, 6, 8, 10])
y,*x = input().split()
if not x:
x=[1]
print(float(x[0])*eval(y))