对于循环python(初学者):不知道为什么这不起作用

时间:2014-03-17 15:40:49

标签: python loops for-loop

所以我正在尝试创建一个带有输入的程序,例如“34123 + 74321”,并使用for循环输出答案。我被困住了,不知道为什么我的下面的代码不起作用:

S = str(input())
for char in range(0, len(S)):
    x = S[1:char]
    p = int(char)+1 
    z = S[p:]
    if chr(char) == "+":
        print (int(z)+int(x))

4 个答案:

答案 0 :(得分:4)

这样做会更容易:

>>> s = input()
34123+74321
>>> print(sum(int(x) for x in s.split('+')))
108444

细分:

  1. 通过将字符串拆分为'+'作为分隔符的部分,建立数字字符串列表。

  2. for list中的每个值,将其转换为整数。

  3. 查找这些整数的总数或sum

  4. print将该值输出到屏幕供用户查看。

  5. 您也可以尝试:

    >>> import ast
    >>> s = input()
    34123+74321
    >>> ast.literal_eval(s)
    108444
    

答案 1 :(得分:2)

char被分配了值(0, 1, ..., len(S)-1),因此chr(char)永远不会等于'+'

答案 2 :(得分:0)

可能你的意思是if s[char] == "+":

通常,您应该尝试使用“说”变量名。

电子。 g。而不是char,最好使用idx或其他东西。

string = str(input())
for idx in range(0, len(string)):
    if string[idx] == "+":
        part1 = string[1:idx]
        part2 = string[idx+1:]
        print (int(part1) + int(part2))

答案 3 :(得分:0)

您正在使用循环来查找' +'的位置。性格对吗?然后代码应为:

for char in range(len(S)): 
    if S[char] == '+': pos = char

然后你可以继续下去:

z = S[pos+1:]
x = S[:pos]
print int(x) + int(z)

但请注意,这不是一种非常 pythonic 的做事方式。在Python中,有一个字符串方法index已找到您要查找的位置:

pos = '1234+5678'.index('+') 

执行此操作的更简单方法(以及更多 Pythonic )将是:

x, z = '1234+5678'.split('+')

当然,您也可以这样做:

print sum(map(int, S.split('+')))

如果您要添加多个项目,这也会有效。

如果你开始学习Python,那么如果你理解一切都是一个对象并拥有自己的方法会更好。你对这些方法的了解越多,你对Python的了解就越多。它是一个比传统语言更高级的程序,所以尽量不要受到您习惯的相同算法结构的限制。

欢呼,快乐的节目!