【问题标题】:for loop in pyton exercisepython练习中的for循环
【发布时间】:2023-02-05 21:08:13
【问题描述】:

寻求帮助解决以下问题: 有 2 个变量节拍和小节需要创建一个循环,在同一行打印所有节拍乘以小节数。 然而,每次开始一个新小节时,第一拍应该等于当前小节的编号。

示例 beats_per_measure = 4 measures = 4 应该给出: 1 2 3 4 2 2 3 4 3 2 3 4 4 2 3 4 而不是 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

**beat = beats_per_measure + 1
measure = measures + 1
for i in range(1,measure):
   for j in range(1, beat):
      print(j, end = " ")**

这是打印节拍 x 小节的代码,但不确定如何更改第一个节拍以反映当前小节。 我希望这是有道理的

【问题讨论】:

  • 在您的打印语句中,您可以将 j 替换为 j if j>1 else i

标签: python for-loop


【解决方案1】:

此代码给出:123123123,也许你在某处丢失了“空间”。

for i in range(1,4):
   for j in range(1, 4):
     print(j, end = "")

【讨论】:

    【解决方案2】:
    for i in range (1, measure+1):
      for j in range(1, beat+1):
        if j==1:
          print(i, end="")
        else:
          print(j, end="")
    

    【讨论】:

    • 前面提到的一个简短的优雅版本 ``` print(i if j ==1 else i, end="") ```
    • 谢谢,但似乎不起作用。它生成以下内容:123451234512345123451234512345 而不是 1234223432344234
    【解决方案3】:

    不要想太多这样的问题;添加额外的 print 提供预期的输出,不需要 if

    measures = 4
    beats = 4
    
    for measure in range(1, measures+1):
        print(measure, end="")
    
        # Start beat from 2
        for beat in range(2, beats+1):
            print(beat, end="")
    

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多