【问题标题】:Why does my input convert 'A' and 'B' to 'B' and 'B'为什么我的输入将“A”和“B”转换为“B”和“B”
【发布时间】:2022-01-25 02:35:59
【问题描述】:

我正在解决以下问题:https://dmoj.ca/problem/ccc11s2

由于某种原因,当我输入 A、B、A、B 时,它会在下面的代码中将 A 转换为 B。谁能帮助我了解正在发生的事情以及我的代码出了什么问题?似乎我得到的唯一总和是 1,我不知道我在哪里搞砸了。

#输入将包含数字 () 后跟行。这些线条由 学生回答的行(每行 A、B、C、D 或 E 之一),然后是正确答案行(每行 A、B、C、D 或 E 之一),顺序相同当学生回答问题时(也就是说,如果 line 是学生的回答,则 line 将包含该问题的正确答案)

n = int(输入())

总和 = 0

对于范围内的 s(n):

student = input()

对于范围内的 t(n):

teacher = input()

for i in range(len(student)):

if student[i] == 'A' and teacher[i] == 'A':
    sum = sum + 1
elif student[i] == 'B' and teacher[i] == 'B':
    sum = sum + 1
elif student[i] == 'C' and teacher[i] == 'C':
    sum = sum + 1
elif student[i] == 'D' and teacher[i] == 'D':
    sum = sum + 1
elif student[i] == 'E' and teacher[i] == 'E':
    sum = sum + 1
else:
    sum = sum

打印(总和)

【问题讨论】:

    标签: for-loop


    【解决方案1】:

    在 for 循环中获取输入时,您必须将其存储在数组中,但在您的情况下,您将其存储在字符串中,因此每当 for 循环迭代而不是附加值时,它都会替换旧值。要获得正确的结果,您必须更正以下步骤。他们需要在最终的 for 循环中稍作改进才能获得正确的总和值。

    n = int(input())
    sum = 0
    student = []
    teacher = []
    
    for s in range(n):
       student.append(input())
    
    for t in range(n):
       teacher.append(input())
    
    
    for i in range(len(student)):
       if student[i] == teacher[i]:
          sum = sum + 1
    

    试试这个代码并评论你的结果。

    【讨论】:

    • 谢谢。有效。更重要的是,感谢您解释逻辑错误。
    • @JunTsuru 你能支持我的回答吗,这样它可以覆盖尽可能多的人。谢谢。
    • 我做到了。我还很新,所以我仍然需要更多的声望才能投票,但我确实投了赞成票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多