【发布时间】:2016-06-07 01:36:42
【问题描述】:
继上一个问题之后,我编写了一个 switch 字典来替换函数中的 switch 语句。在收到用户输入后,我已将此字典放在 def f(x) 下,就像这样。然后该函数应将字典中匹配的任何内容写入“a”和“b”,以便在 add() 函数中使用。
while loop == 1:
choice = menu()
if choice == '1':
a = str(input("Enter a note: "))
b = str(input("Enter an interval: "))
def f(x):
notes = {
'C': 0,
'Cs': 1,
'D': 2,
'Ds': 3,
'E': 4,
'F':5,
'Fs': 6,
'G': 7,
'Gs': 8,
'A': 9,
'As': 10,
'B': 11,
}
return = notes[x]
def g(x):
intervals = {
'm2': 1,
'mj2': 2,
'm3': 3,
'mj3': 4,
'p4': 5,
'T': 6,
'p5': 7,
'm6': 8,
'mj6': 9,
'm7': 10,
'mj7': 11,
}
return intervals[x]
f (a)
g (b)
add(a, b)
但是,我在这两行收到“并非所有参数都在字符串格式化期间转换”错误:
add(a, b)
在我定义添加函数的脚本开头。
def add(a,b):
print ((a), "+", (b), "=", (a + b) %12)
我不确定如何解决这个问题,因为我不太了解代码是如何转换字符串的。我的函数是否需要整数而不是接收字符串?
谢谢!
【问题讨论】:
-
使用应该重命名你的变量太多 'a' 和 'b' ,给他们上下文。
标签: python dictionary switch-statement