繁体   English   中英

我知道两个变量是相同的,但我的if语句不能识别这个?

I have two variables that I know are equal but my if statement does not recognise this?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是我的代码:

bookings = ['blue,red', 'green,orange', 'yellow, purple']
number = 0
b = 0
c = 1

file_test = open('test_1.txt' , 'wt')

results_song = []

for item in bookings:
   words = bookings[number].split(',')
   results_song.append(words[0])
   results_song.append(words[1])

   number = number + 1

results_song_str = '\n'.join(results_song)
print(results_song_str)

file_test.write(results_song_str)

file_test.close()

file_test = open('test_1.txt' , 'r')

line = file_test.readlines()


for item in bookings:

    line_1 = line[b]
    line_2 = line[c]
    answer = input('If first word is then what is the second word')

    if answer == line_2:
       print('correct')
    else:
       print('wrong')

    b = b + 2
    c = c + 2

但是,代码无法识别答案是否等于line_2 我无法弄清楚为什么会这样。 我检查过c是正确的数字,而line_2与答案相同。 但是我确实注意到当我在打印answer和line_2时运行代码时会返回:

red

red

但我从来没有在这里添加新的线路功能。

我非常感谢任何帮助,因为我需要将此代码用于学校作业。

1 个回复

通过打印进行调试

# ...

for item in bookings:
    line_1 = line[b]
    line_2 = line[c]

    print("Your Answer:", repr(answer))
    print("Actual Answer:", repr(line_2))

    # ...

Your Answer: 'red'
Actual Answer: 'red\n'

啊哈! 一个偷偷摸摸的换行符! 好像当程序从文件中读取文本并拆分行时,它会为您保存换行符。 多么甜蜜烦人。 :|

要删除它,可以使用str.replace()方法

# ...

for _ in range(len(bookings)):   # I took the freedom to modify the loop conditions

    line_1 = line[b].replace('\n','')
    line_2 = line[c].replace('\n','')

    # ...

或者更改从文件中读取行的方式,使用str.split()方法手动拆分行

# ...

with open('test_1.txt' , 'r') as file_test:
    line = file_test.read().split('\n')

for _ in range(len(bookings)):
    line_1 = line[b]
    line_2 = line[c]

    # ...

感谢@ juanpa.arrivillaga建议使用repr()来检查值。

4 两个相等的变量不会触发 if() 语句

我有点生疏,所以可能有一些明显的东西,但是我正在设置一个表单,当勾选复选框时我想隐藏一行,但是我用来检查单元格实际内容的 if 语句预定的“VALUE”没有触发。 上面的日志将两者都打印为“true”,但从未输入 if 语句。 我错过了什么? ...

7 除非有cout语句,为什么我的代码不起作用?

我一直在写这段代码,但是我真的不知道出什么问题了。 我是一个初学者,但是我仍然可以看到这是一个范围界定问题。 无论如何,如果有cout语句,它似乎可以工作。 为什么? 我尝试使用j作为静态整数,但是没有用。 也许只是因为我对它的理解不够。 谢谢! ...

8 我必须让我的大部分变量最终成功吗?

在我使用IntelliJ检查我的代码后,会发出数百个“声明可以有最终修饰符”的警告。 要解决这些警告,我基本上需要将大部分变量转换为final,以下是一个典型示例。 这让我觉得我应该默认将成员变量设为'final'。 在大多数情况下,成员(尤其是容器类(即List或Set))在分配后不会更 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM