首页 > 解决方案 > Python:无法使用 if 语句让元组在字典中比较其中的元素

问题描述

项目分解

  1. 要求用户输入一个数字和第二个数字。
  2. 通过将两个数字相加来创建一个名为 results 的变量。
  3. 我们在名为 ans(答案的缩写)的字典中搜索第一个 if 语句中的结果。
  4. 这部分功能应有尽有。然后通过显示原始数值方程将这些结果返回给用户。以及使用字母的方程式版本(如果您感到困惑,请参阅下面的完整代码)。

但是,如果结果与第一个 if 语句不匹配,它将移至下一个。在整个 if 语句之前,一个名为 search 的变量通过以下方式创建:

search = tuple(str(results))

我现在需要获取结果并搜索每个单独的字符,看看这些字符是否也出现在字典 (ans) 中。但是,它不是在字典中搜索元组字符串。

完整代码

translate_results = {
    1: "A", 2: "B", 3: "C", 4: "D", 5: "E", 6: "F", 7: "G", 8: "H",
    9: "I", 10: "J", 20: "T", 0: 0, "1": "A", "2": "B", "3": "C", "4": "D",
    "5": "E", "6": "F", "7": "G", "8": "H", "9": "I", "0": "0",
}

ans = translate_results

user = input('Enter a number: ')
user2 = input('Enter another number: ')
results = int(user) + int(user2)
search = tuple(str(results))

if results in ans:
    print(f"{user} + {user2} = {results}")
    print(f"{ans[user]} + {ans[user2]} = {ans[results]}")
elif search in ans:
    print(f"{user} + {user2} = {results}")
    print(f"{ans[user]} + {ans[user2]} = {ans[search]}")
    print(search)
else:
    print(f" Answer is {results}")
    print(f"However, elif statment failed. Tuple list created: {search}")

示例一

因此,如果用户输入 1(用户)和 3(用户 2),则输出为

1 + 2 = 3
A + B = C

基于第一个 if 语句。

第 2 部分 If 语句

假设当它从字典(ans)中的搜索(变量)中找到单个字符串字符时激活。比假设让这些字符在字典中匹配它们并改为显示字典值。

示例二(如果有效)

所以用户输入 1 (user) 和 29 (user2) 输出将是在匹配变量搜索到 ans 之后:

1 + 29 = 30
A + BI = C0

标签: python-3.xdictionaryif-statementtuplesuser-input

解决方案


像这样的东西?

translate_results = {
    1: "A", 2: "B", 3: "C", 4: "D", 5: "E", 6: "F", 7: "G", 8: "H",
    9: "I", 10: "J", 20: "T", 0: 0, "1": "A", "2": "B", "3": "C", "4": "D",
    "5": "E", "6": "F", "7": "G", "8": "H", "9": "I", "0": "0",
}

ans = translate_results

user = input('Enter a number: ')
user2 = input('Enter another number: ')
results = int(user) + int(user2)
search = tuple(str(results))
if results in ans:
    print(f"{user} + {user2} = {results}")
    print(f"{ans[user]} + {ans[user2]} = {ans[results]}")
elif set(search).issubset(set(ans.keys())):
    txt1= ''       #for each create a string where the program appends the translated values
    for i in user:
        txt1+=str(ans[i])
    txt2= ''
    for i in user2:
        txt2+=str(ans[i])
    txtres= ''
    for i in search:
        txtres+=str(ans[i])
    print(f"{user} + {user2} = {results}")
    print(f"{txt1} + {txt2} = {txtres}")
    print(search)
else:
    print(f" Answer is {results}")
    print(f"However, elif statment failed. Tuple list created: {search}")

输入:

10, 15

输出:

10 + 15 = 25
A0 + AE = BE
('2', '5')

还要检查 translate() 函数,如果有帮助的话。


推荐阅读