如何返回基于整数的图像名称?我有一个主意,但是它使用了if
和else
案例的负载。
这就是问题,我需要一个函数,该函数将基于1到500之间的整数返回图像的名称。如果整数在1到30之间,则显示image1,从这一点开始,我返回一个不同的值图片分别为50、75、100、125、150、175、200等。
想到的第一个想法是使用IF和Elses这样的:
if (number >=1 && number <= 29) {
Return image1
} else if (number >=30 && number <=49) {
Return image2
} else if... etc
但是此功能将变得非常庞大,因为我将拥有大约20个If Else,以便覆盖所有可能的结果,直到500号为止。
另一种选择是使用键:值对创建JSON对象,并使用整数键获取图像,如下所示:
returnImage(int) {
let images = {
30: 'image1',
50: 'image2',
75: 'image3'
}
return images[int]
}
例如,如果整数是37,我不确定如何使此工作有效。我显然可以列出所有整数作为键,但是该函数将比if else函数更大,并且还会有很多重复,因此似乎不起作用。
有什么建议吗?
答案 0 :(得分:7)
您可以为此使用数学计算:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
excel_file = 'C:/Users/afrydman/Documents/Storage and Data Centers FFO Multiples Data.xlsx'
dfStorage = pd.read_excel(excel_file,sheet_name='Storage Data', index_col='Date')
dfrollingStd = dfStorage.rolling(12).std().shift(-11)
#dfrollingStd.fillna(0)
#print(dfStorage[1][3])
for i in dfStorage:
dftemp = pd.DataFrame(dfStorage,columns=[i])
for j in dfrollingStd:
dfnew=pd.DataFrame(dfrollingStd,columns=[j])
dftemp['-1std'] = pd.DataFrame(dftemp).subtract(dfnew)
dftemp['+1std'] = pd.DataFrame(dftemp).add(dfnew)
pd.DataFrame(dftemp).plot()
plt.ylabel('P/FFO')
答案 1 :(得分:2)
只需遍历images
中的键即可。
returnImage(num){
let images= {
30: 'image1',
50: 'image2',
75: 'image3'
}
for(let image in images){
if(num <= image) return images[image];
}
}
编辑:如果数字超过了最大值,我会在循环后添加一些默认图像。
答案 2 :(得分:2)
您需要的是一个范围。
const IMAGE_FOR_NUMBER = [
[0, 9, "one.jpg"],
[10, 19, "ten.jpg"],
[20, 100, "many.jpg"],
];
function getImage(n, notFound="not-found.jpg") {
for (const [min, max, image_name] of IMAGE_FOR_NUMBER) {
if ((min <= n) && (n <= max)) return image_name;
}
return notFound;
}
请注意,它也适用于不相交的范围