【问题标题】:If statement running every time not just for selected values [closed]如果语句每次都运行,而不仅仅是针对选定的值[关闭]
【发布时间】:2020-11-17 15:52:14
【问题描述】:

为什么这会打印所有笔记,而不仅仅是笔记 1、3、6、8 和 10?

Notes = ["C",["Db","C#"],"D",["Eb","D#"],"E","F",["Gb","F#"],"G",["Ab","G#"],"A",["Bb","A#"],"B"]

for noteNumb in range (0,len(Notes)):
    if noteNumb == 1 or 3 or 6 or 8 or 10:
        print(noteNumb)

【问题讨论】:

  • if noteNumb==1 or 3 or 6 or 8 or 10 不是测试多个值的正确方法。正确方法见这个答案stackoverflow.com/a/15112149/494134
  • 你能发布完整的回溯吗?
  • 你应该尝试调试代码,看看各个变量在中断的情况下是什么状态,并与这些变量在没有中断时的状态进行比较;你会很快发现问题!至少确定哪一行代码出错了。
  • 还请看看如何编写一个最小可重现示例,因为您的代码有很多与您的问题无关的内容,并且由于您错过了一些内容而无法运行! stackoverflow.com/help/minimal-reproducible-example
  • 删除了很多我无法运行的代码,大部分都可以。你确定你得到了错误吗?

标签: python arrays if-statement indexing range


【解决方案1】:

问题出在if noteNumb==1 or 3 or 6 or 8 or 10:这一行

(1 or 3 or 6 or 8 or 10) 将始终返回 1

if noteNumb in [1,3,6,8,10]: 将解决您当前的问题

if type(note) is list:
    note=random.choice(note) 

将更通用地​​解决问题。

【讨论】:

  • 谢谢!这修复了它,我现在知道出了什么问题:)
猜你喜欢
  • 2022-06-18
  • 2017-10-11
  • 2017-01-19
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多