2015-07-06 82 views
0

基本上我有数字从1-12与相应的值。如果用户输入3,如何显示输出为b,a,l和k?如何在python中显示除当前值之外的前4个值?

mm=int(raw_input("enter a number")) 
ans = { 
    "1":"a", 
    "2":"b", 
    "3":"c", 
    "4":"d", 
    "5":"e", 
    "6":"f", 
    "7":"g", 
    "8":"h", 
    "9":"i", 
    "10":"j", 
    "11":"k", 
    "12":"l" 
} 
v=(mm-1)%12 
w=(mm-2)%12 
x=(mm-3)%12 
y= (mm-4)%12 

print ans[str(v)] 
print ans[str(w)] 
print ans[str(x)] 
print ans[str(y)] 

如果有人帮助我使用此代码或任何其他替代方式,我将会很有帮助。

+0

那么上面的代码有什么问题? –

+0

你现在得到什么? – Evert

+0

问题是当值得到3-3它的0,所以它不工作。给出,keyError'0'我不想这样,如果它变为0,则取值12. – HunterrJ

回答

1

如果你可以使用列表代替dictionnaries,我会跟

def get_ans(index): 
    ans = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"] 
    end = index - 1 
    start = end - 4 
    if start < 0: 
     result = ans[start:] + ans[:end] 
    else: 
     result = ans[start:end] 
    print result 

if __name__ == "__main__": 
    mm=int(raw_input("enter a number ")) 
    get_ans(mm) 

去如果你不能直接使用名单,我建议使用range来生成你需要的4个整数,并在你的字典中查找它们的值。

+0

谢谢,正是我想要的。欢呼声(y) – HunterrJ

0

这是你想要做的吗?

mm = 1 

def ans(i): 
    i = (i+1)%12 
    return chr(i+97) 

def get_answer_list(i): 
    return [ans((i-1)%12), ans((i-2)%12),ans((i-3)%12),ans((i-4)%12)] 

print(get_answer_list(mm)) 

这然后可以简化为

mm = 1 

def ans(i): 
    return chr(i+97) 

def get_answer_list(i): 
    return [ans(i%12), ans((i-1)%12),ans((i-2)%12),ans((i-3)%12)] 

print(get_answer_list(mm)) 
+0

谢谢,但它只显示字符,我需要从'n'字符串列表中显示它。 – HunterrJ

+0

好的,已更新。现在它返回一个列表。 –

+0

你应该更新'get_answer_list'中的变量名称('nm - > i') –