【问题标题】:Unable to print in both ascending and descending range in for loop无法在for循环的升序和降序范围内打印
【发布时间】:2019-02-18 05:46:08
【问题描述】:

我正在尝试在 for 循环中创建 if else 规则,但目前仅当起始值小于结束值时才会打印这些值。如果起始值大于结束值,我希望范围以降序打印。

我尝试了几个不同的选项,但理想情况下我尝试只使用两个 for 循环来创建代码。

for i in range(x,y+1):
    if (x<=y):
      print(i) 
    else:
     for i in range(y,x,-1):
      print(i)
count_odd = 0 
count_even = 0 
for n in range(x,y+1):
        if   n%2==0: 
             count_even = count_even+1 
        else: 
             count_odd = count_odd+1 
print("Number of even numbers :",count_even)
print("Number of odd numbers :",count_odd) 

【问题讨论】:

    标签: python for-loop


    【解决方案1】:

    如果x&lt;y 在您的代码中添加一个条件,并相应地使用range 升序或降序:

    x = 10
    y = 2
    count_odd = 0 
    count_even = 0 
    if x < y:
        for n in range(x,y+1):
            if n%2==0: 
                count_even = count_even+1 
            else: 
                count_odd = count_odd+1 
    else:
        for n in range(x, y-1, -1):
            if n%2==0: 
                count_even = count_even+1 
            else: 
                count_odd = count_odd+1 
    
    print("Number of even numbers :",count_even)
    print("Number of odd numbers :",count_odd) 
    

    输出:

    Number of even numbers : 5                                                                                                            
    Number of odd numbers : 4 
    

    编辑

    你的初始 for 循环应该是:

    if (x<=y):
        for i in range(x,y+1):
            print(i) 
    else:
        for i in range(x,y-1,-1):
            print(i)
    

    【讨论】:

      【解决方案2】:

      您需要以不同方式处理它们,并在条件满足时调用特定函数。这是一个例子。

      x = 1
      y = 10
      
      
      def descOrder(x,y):
          count_even = 0
          count_odd = 0
          for i in range(x, y-1, -1):
              if i % 2 == 0:
                  count_even = count_even + 1
              else:
                  count_odd += 1
              print(i)
          print ("Even:",count_even, "Odd:",count_odd)
      
      
      def asceOrder(x, y):
          count_even = 0
          count_odd = 0
          for i in range(x ,y+1):
              if i % 2 == 0:
                  count_even += 1
              else:
                  count_odd += 1
              print(i)
          print ("Even:",count_even, "Odd:",count_odd)
      
      
      if x > y:
          descOrder(x, y)
      else:
          asceOrder(x, y)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多