在 streamlit 中编写网站,如何避免使用长 if 链?
Writing a website in streamlit, how can I avoid using long if-chains?
我正在为 class 编写一个项目,但我不知道如何不将代码制作成一个长链,将其制作成 class 是否可行?在整个程序中调用 class?
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
class religionss:
def __init__(self, size, history, rituals, meditation, belief, scripts):
self.size = size
self.history = history
self.rituals = rituals
self.meditation = meditation
self.belief = belief
self.scripts = scripts
st.title('Världsreligionerna')
religion_options = st.selectbox(
'Välj religion nedan: ',
(f'Kristendomen', 'Islam', 'Judendomen',
'Hinduismen', 'Buddhismen'))
st.write(f'Du valde: {religion_options}')
if religion_options == 'Islam':
st.write('Islam är en abrahamitisk religion som grundades för ca 1400 år sedan.')
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
if box == 'Storlek':
st.write('1 miljard')
elif religion_options == 'Judendomen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
elif religion_options == 'Hinduismen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
elif religion_options == 'Buddhismen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
elif religion_options == 'Kristendomen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
这是一种不使用 if/else 的方法。它使用字典查找。
选择框选项是一样的,所以我也重构了它。
代码
import streamlit as st
# import pandas as pd
# import numpy as np
# import matplotlib.pyplot as plt
def mybox():
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
return box
def Islam():
st.write('Islam är en abrahamitisk religion som grundades för ca 1400 år sedan.')
box = mybox()
if box == 'Storlek':
st.write('1 miljard')
def Judendomen():
box = mybox()
def Hinduismen():
box = mybox()
def Buddhismen():
box = mybox()
def Kristendomen():
box = mybox()
def main():
st.title('Världsreligionerna')
religion_options = st.selectbox(
'Välj religion nedan: ',
(f'Kristendomen', 'Islam', 'Judendomen',
'Hinduismen', 'Buddhismen'))
st.write(f'Du valde: {religion_options}')
opt_dict = {
'Islam': Islam,
'Judendomen': Judendomen,
'Hinduismen': Hinduismen,
'Buddhismen': Buddhismen,
'Kristendomen': Kristendomen
}
opt_dict[religion_options]()
if __name__ == '__main__':
main()
输出
着陆页
选择伊斯兰教后
放在class
代码
"""
religion.py
"""
import streamlit as st
# import pandas as pd
# import numpy as np
# import matplotlib.pyplot as plt
class Religion:
def __init__(self):
pass
def start_page(self):
st.title('Världsreligionerna')
religion_options = st.selectbox(
'Välj religion nedan: ',
(f'Kristendomen', 'Islam', 'Judendomen',
'Hinduismen', 'Buddhismen'))
st.write(f'Du valde: {religion_options}')
opt_dict = {
'Islam': Islam,
'Judendomen': Judendomen,
'Hinduismen': Hinduismen,
'Buddhismen': Buddhismen,
'Kristendomen': Kristendomen
}
opt_dict[religion_options]()
def mybox():
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
return box
def Islam():
st.write('Islam är en abrahamitisk religion som grundades för ca 1400 år sedan.')
box = mybox()
if box == 'Storlek':
st.write('1 miljard')
def Judendomen():
box = mybox()
def Hinduismen():
box = mybox()
def Buddhismen():
box = mybox()
def Kristendomen():
box = mybox()
def main():
religion = Religion()
religion.start_page()
if __name__ == '__main__':
main()
您可以在另一个脚本中使用模块 religion.py 让我们说 sample.py.
"""
sample.py
"""
import religion
var = religion.Religion()
var.start_page()
我正在为 class 编写一个项目,但我不知道如何不将代码制作成一个长链,将其制作成 class 是否可行?在整个程序中调用 class?
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
class religionss:
def __init__(self, size, history, rituals, meditation, belief, scripts):
self.size = size
self.history = history
self.rituals = rituals
self.meditation = meditation
self.belief = belief
self.scripts = scripts
st.title('Världsreligionerna')
religion_options = st.selectbox(
'Välj religion nedan: ',
(f'Kristendomen', 'Islam', 'Judendomen',
'Hinduismen', 'Buddhismen'))
st.write(f'Du valde: {religion_options}')
if religion_options == 'Islam':
st.write('Islam är en abrahamitisk religion som grundades för ca 1400 år sedan.')
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
if box == 'Storlek':
st.write('1 miljard')
elif religion_options == 'Judendomen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
elif religion_options == 'Hinduismen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
elif religion_options == 'Buddhismen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
elif religion_options == 'Kristendomen':
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
这是一种不使用 if/else 的方法。它使用字典查找。
选择框选项是一样的,所以我也重构了它。
代码
import streamlit as st
# import pandas as pd
# import numpy as np
# import matplotlib.pyplot as plt
def mybox():
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
return box
def Islam():
st.write('Islam är en abrahamitisk religion som grundades för ca 1400 år sedan.')
box = mybox()
if box == 'Storlek':
st.write('1 miljard')
def Judendomen():
box = mybox()
def Hinduismen():
box = mybox()
def Buddhismen():
box = mybox()
def Kristendomen():
box = mybox()
def main():
st.title('Världsreligionerna')
religion_options = st.selectbox(
'Välj religion nedan: ',
(f'Kristendomen', 'Islam', 'Judendomen',
'Hinduismen', 'Buddhismen'))
st.write(f'Du valde: {religion_options}')
opt_dict = {
'Islam': Islam,
'Judendomen': Judendomen,
'Hinduismen': Hinduismen,
'Buddhismen': Buddhismen,
'Kristendomen': Kristendomen
}
opt_dict[religion_options]()
if __name__ == '__main__':
main()
输出
着陆页
选择伊斯兰教后
放在class
代码
"""
religion.py
"""
import streamlit as st
# import pandas as pd
# import numpy as np
# import matplotlib.pyplot as plt
class Religion:
def __init__(self):
pass
def start_page(self):
st.title('Världsreligionerna')
religion_options = st.selectbox(
'Välj religion nedan: ',
(f'Kristendomen', 'Islam', 'Judendomen',
'Hinduismen', 'Buddhismen'))
st.write(f'Du valde: {religion_options}')
opt_dict = {
'Islam': Islam,
'Judendomen': Judendomen,
'Hinduismen': Hinduismen,
'Buddhismen': Buddhismen,
'Kristendomen': Kristendomen
}
opt_dict[religion_options]()
def mybox():
box = st.selectbox('Välj kategori nedan:',
('Storlek', 'Historia', 'Ritualer',
'Meditation', 'Tro', 'Heliga skrifter'))
return box
def Islam():
st.write('Islam är en abrahamitisk religion som grundades för ca 1400 år sedan.')
box = mybox()
if box == 'Storlek':
st.write('1 miljard')
def Judendomen():
box = mybox()
def Hinduismen():
box = mybox()
def Buddhismen():
box = mybox()
def Kristendomen():
box = mybox()
def main():
religion = Religion()
religion.start_page()
if __name__ == '__main__':
main()
您可以在另一个脚本中使用模块 religion.py 让我们说 sample.py.
"""
sample.py
"""
import religion
var = religion.Religion()
var.start_page()