簡體   English   中英

在Python中切換字典無法正確轉換int和str

[英]Switch dictionary in Python not converting int and str correctly

在上一個問題之后,我編寫了一個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)

在腳本的開頭,我定義了add函數。

def add(a,b):
print ((a), "+", (b), "=", (a + b) %12)

我不確定如何解決此問題,因為我不太了解代碼如何轉換字符串。 我的函數是否期望整數而不是接收字符串?

謝謝!

在調用add函數之前,先嘗試打印a和b來查看它們的值。

我的猜測是,開關函數內部的變量在函數范圍內,並且不會在函數外部更改變量。

為什么不通過變量接收返回的值?

a = f(a)

b = g(b)

嘗試這個:

def add(va,vb):
    print ((va), "+", (vb), "=", (va + vb) %12)

aa =  f(a)
bb =  g(b)
add(aa, bb)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM