快速问题,因为我不熟悉Python 3.5(实际上它是我的第一个编程语言),我无法理解如何有效地实现它。
我想创建一个小程序,其中我根据几个问题的结果计算出满意度查询。每个答案对应一个增加或减少满意度的int值。
最后,程序计算一个int满意度值,我想要返回一个str文本。
我做了什么 - 我真的认为这可以优化 - 对于每个价值我都有这样的事情:
if satisfaction == 0:
print("not really satisfied")
elif satisfaction == 1:
print("kinda satisfied")
......等等。 我真的觉得它可能会更好所以我认为我可以将形容词放入如下列表中:
satisfaction_list = ["not at all", "not really", "kinda", "very"]
并用它来实现。每个满意度值将作为满意度列表中的一个度数返回...问题是:我不知道该怎么做。
我虽然可以创建两个列表,一个满足-x到+ x的满意值(让我们称之为int_satisfaction_value)并使它与satisf_list(我们可以重命名str_satisfaction_value)相关联,但是我不知道怎么做。
我想出的是:
if satisfaction_value == int_satisfaction_value[0]
print(str_satisfaction_value[0])
但它并没有解决我的问题。相反,它只是替换字符串" print"输入一个列表。
很抱歉这篇长篇文章,我希望我很清楚。如果您有任何进一步的问题,我很乐意回答;谢谢你的回答!
编辑:顺便提一下,无论是你的建议,还是列表或词典,
答案 0 :(得分:3)
使用字典,例如:
satdict = dict(enumerate(["not satisfied", "satisfied", "very satisfied"]))
satisfaction_value = 1
print(satdict[satisfaction_value])
'satisfied'
答案 1 :(得分:0)
我能想到的最简单的方法是使用字典。 您可以将值分配给变量,如下所示: satisfaction_list = {1:“根本没有”,2:“不是真的”,3:“有点”,4:“非常”}
要打印“根本不”,您使用: print(satisfaction_list [1])
答案 2 :(得分:0)
假设您希望/坚持使用列表,改善尝试的一种方法是:
for i in range(len(int_satisfaction_value)):
if satisfaction_value == int_satisfaction_value[i]:
print("I am " + str_satisfaction_value[i] + " satisfied")
break # we have found a match, so we don't have to try all the other options.
另一种方式是:
print("I am " + str_satisfaction_value[satisfaction_value] + " satisfied")
注意:这假定您的satisfaction_value
直接映射到str_satisfaction_value
列表的索引。如果不可能/希望使用评论中建议的字典:
str_satisfaction_dict = {0: 'not at all', 0.5: 'kinda', 1: 'very'}
print("I am " + str_satisfaction_dict[satisfaction_value] + " satisfied")