使用for循环的两个数字的总和

时间:2018-06-23 12:32:01

标签: python

我需要编写一个程序,接受一行“数字1” +“数字2”形式的输出,并输出两个数字的和。

以下内容无效:

S = input()
s_len = len(S)
for i in range(0, s_len):

    if i == '+':
        num1 = int(S[:i])
        num2 = int(S[:i])
        add = num1+num2
        print(add)

4 个答案:

答案 0 :(得分:2)

我想您想解决这样的问题:

S = input()
sum = 0
num = 0
for i in range(0, len(S)):
    if S[i] != '+':
        num = num * 10 + int(S[i])  #Assuming «number1>> and «number2» can have multiple digits 
    else:
        sum += num
        num = 0

sum += num
print (sum)

如该答案的评论中所述,您可能希望降低铸造成本:

S = input()
sum = 0
num = 0
start = 0
for i in range(0, len(S)):
    if S[i] == '+':
        sum += int(S[start:i])
        start = i + 1

sum += int(S[start:len(S)])
print (sum)

假设:您的字符串始终采用您提到的格式。

答案 1 :(得分:2)

如果您真的想使用 for 循环来计算总和,则可以通过这种方式修改程序

S = input()
s_len = len(S)
for i in range(s_len):
    if S[i] == "+":
        num1 = int(S[:i])
        num2 = int(S[i+1:])
        add = num1 + num2
        print(add)       
        break

但是请记住,程序可以通过多种方式执行相同的操作,主要区别始终在于程序的最优性,使用迭代器并不是解决此问题的最佳方法。解决方案没有任何灵活性,也没有机会在输入数据时出现用户错误,必须明确指定

答案 2 :(得分:1)

您正在比较if条件中的intstr,将条件替换为S[i] == '+'。另外请注意,num2的分片应改为S[i+1:]

但是,您不应使用'+'来遍历字符以在str.split处进行拆分。

s = input()

nums = s.split('+')
sum_ = sum(int(x) for x in nums)

答案 3 :(得分:1)

您可以使用map将字符串转换为整数,然后将其添加。这是一个方便的班轮。

sum_ = sum(map(int, input().split('+')))