创建计算器,但运算顺序始终默认为加法
Creating a calculator, but the order of operations always defaults to addition
因此,为了开始编码,我决定创建一个简单的计算器,该计算器接受用户的输入,将其转换为两个单独的列表,然后询问您要使用的运算,然后计算方程式。问题是我会说我想使用减法,例如,我的两个数字是 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' 是一个定义的字符,所以它总是 return 真,这就是为什么你的代码总是添加。您还应该解决 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)])
因此,为了开始编码,我决定创建一个简单的计算器,该计算器接受用户的输入,将其转换为两个单独的列表,然后询问您要使用的运算,然后计算方程式。问题是我会说我想使用减法,例如,我的两个数字是 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' 是一个定义的字符,所以它总是 return 真,这就是为什么你的代码总是添加。您还应该解决 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)])