微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建计算器,但运算顺序始终默认为加法

如何解决创建计算器,但运算顺序始终默认为加法

为了开始编码,我决定创建一个简单的计算器,它接受用户的输入,将其转换为两个单独的列表,然后询问您要使用哪些操作,并计算出等式。问题是我会说我想使用减法,例如,我的两个数字是 10 和 5,然后输出是 15。这是我的代码

    first_numbers = [] 
second_number = []
maxLengthList = 1
while len(first_numbers) < maxLengthList:
    item = input("Enter Your First Number To Be Calculated: ")
    first_numbers.append(item)
while len(second_number) < maxLengthList:
    item = input("Enter Your Second Number To Be Calculated: ")
    second_number.append(item)


type_of_computing = raw_input('(A)dding  or  (S)ubtracting  or  (M)ultiplying  or  (Dividing): ')

if type_of_computing == 'A' or 'a':
    print ('Final Result:')
    sum_list = [a + b for a,b in zip(first_numbers,second_number)]
    print sum_list



elif type_of_computing == 'S' or 's':
    print ('Final Result:')
    difference_list = [c - d for c,d in zip(first_numbers,second_number)]
    print difference_list




elif type_of_computing == 'M' or 'm':
    print ('Final Result:')
    product_list = [e * f for e,f in zip(first_numbers,second_number)]
    print product_list




elif type_of_computing == 'D' or 'd':
    print ('Final Result:')
    quotient_list = [g / h for g,h in zip(first_numbers,second_number)]
    print quotient_list





 

解决方法

您的问题是 if 语句。

if type_of_computing == 'A' or 'a':

应该是if type_of_computing == 'A' or type_of_computing == 'a'

因为您正在检查两个不同的条件。 'a' 是一个定义的字符,所以它总是返回 true,这就是为什么你的代码总是添加。您还应该修复 elif 语句的问题,问题应该得到解决。但是,我没有自己测试这个

此外,由于您要尝试添加两个值,因此输入(first_numbers 列表的每个项目和 second_number 列表的每个项目)应该是整数,而不是字符串。

,

支票中的 or 表达式总是产生 True,因为 'a' 是一个真(真)值。要测试一个值是否是您可以做的两件事之一:

if type_of_computing == 'A' or type_of_computing == 'a':

或:

if type_of_computing in ('A','a'):

但是对于不区分大小写比较的特殊情况,使用 upper()lower() 对字符串进行规范化并进行单个比较会更容易:

if type_of_computing.upper() == 'A'

您还可以通过使用字典而不是一堆 if 语句来简化这种类型的逻辑(并避免大量复制和粘贴)。以下是将此代码重写为更短的一种方法:

maxLengthList = 1
first_numbers = [
    int(input("Enter Your First Number To Be Calculated: ")) 
    for _ in range(maxLengthList)
]
second_numbers = [
    int(input("Enter Your Second Number To Be Calculated: ")) 
    for _ in range(maxLengthList)
]


type_of_computing = input(
    '(A)dding  or  (S)ubtracting  or  (M)ultiplying  or  (Dividing): '
).upper()
compute = {
    'A': int.__add__,'S': int.__sub__,'M': int.__mul__,'D': int.__truediv__,}[type_of_computing]

print('Final Result:')
print([compute(a,b) for a,b in zip(first_numbers,second_numbers)])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。