在python中的for循环中使用if-else语句进行增减。

问题描述 投票:0回答:2

我将接受一个意见 n 然后打印 n 每一行我都会输入一个字符串,如果这个字符串是 "++X "或 "X++",那么我将在0的基础上加1(X的初始值是0)。如果我的字符串是"--X "或 "X--",那么我将从0中减去1(如果我已经取了另一个字符串,那么就从这个字符串的值中减去)。

以下是我的代码。

n = int(input())
c = 0
for x in range(n):
    a = input()
    if a == "X++" or "++X":
        c = c + 1
    elif a == "--X" or "X--":
        c = c - 1

print(c)

我的输入:

2
X++
--X

我的输出:

2

我的输出: 预期的输出。

0

因为 "X++"的值是1,"--X "的值是0。那么,我的代码有什么问题,如何解决这个问题?

python-3.x for-loop if-statement increment decrement
2个回答
1
投票

参考文献。https:/docs.python.org3referenceexpressions.html#operator-precedence#。

逻辑表达式中的先后顺序使你的表达式相当于 if (a == "X++") or "++X": 始终 True 因为 bool("++X") == True. 任何非空字符串都将是True。 所以,正如其他答案所建议的,你可以使用 if a == "X++" or a == "++X": 自从 or 在表达式中是最后一个被评估的,interp将先评估平等操作,然后应用 or.

另一种更简捷的方法来测试一个变量的值是否有可能是几个选择,就是使用 in 操作符。

n = int(input())
c = 0
for x in range(n):
    a = input()
    if a in ("X++", "++X"):
        c = c + 1
    elif a in ("--X", "X--"):
        c = c - 1

print(c)

所以,你有一个例子,一个非空的字符串计算为 True,还有其他有趣的情况下,评估到的是 TrueFalse 中的表达式。例如,列表。

li1 = []
li2 = [1, 2]

if li1:
    print("li1")
if li2:
    print("li2")

将输出 li2.

奖励回合--将数值与字符串输入关联起来,使用一个 dict

>>> def foo(n):
...     d = {'X++': 1, '++X': 1, '--X': -1, 'X--': -1}
...     c = 0
...     for _ in range(n):
...         a = input()
...         c += d.get(a, 0)
...     return c
...     
>>> foo(3)
<-- X++
<-- ++X
<-- ++X
3

1
投票
n = int(input())
c = 0
for x in range(n):
    a = input()
    if a == "X++" or a == "++X":
        c = c + 1
    elif a == "--X" or a == "X--":
        c = c - 1

print(c)

:)


1
投票

改变你的条件,从

if a == "X++" or "++X":

if a == "X++" or a == "++X": 

if a in ("X++", "++X"):

1
投票

你忘了和我比 a 的第二个操作数中。ors. 非空的字符串将计算为 True.

n = int(input())
c = 0
for x in range(n):
    a = input()
    if a == "X++" or a == "++X":
        c = c + 1
    elif a == "--X" or a == "X--":
        c = c - 1

print(c)
© www.soinside.com 2019 - 2024. All rights reserved.