【问题标题】:Is there a way to print ranges using for in a single line in python有没有办法在 python 的单行中使用 for 打印范围
【发布时间】:2019-11-05 21:28:56
【问题描述】:

所以,这是我计算一个数字是否为素数的代码。如果一个数字是否为素数,它也会打印出该数字的除数。当我尝试在单行的列表中打印非素数的除数时,我的问题就出现了。

x=int(input())
if x<0:
    print("you did not enter a natural nubmer")
else:
    if x > 1:
        for i in range(2, x//2):
            if (x % i) == 0:
                print(x, "is not a prime number")
                for n in range (2, x-1):
                    if x%n==0:
                        print[n]
                break
        else:
            print(x, "is a prime nubmer")
            print([1,x])
    else:
        print(x, "is not a prime number")
        for n in range (2, x-1):
                    if x%n==0:
                        print[n]

例如 8,它会打印它不是素数,然后它会打印 [2] 和 [4],但我希望它打印 [2,4]。请帮忙,谢谢。

【问题讨论】:

    标签: python for-loop primes division


    【解决方案1】:

    这就是list comprehension 的意义所在:

    divs = [n for n in range(2, x - 1) if x % n == 0]
    print(divs) # [2, 4]
    

    【讨论】:

      【解决方案2】:

      要打印多次而不进入下一行,您可以使用这部分代码: 打印(n,结束=“”)。所以你的代码变成了这样:

      x=int(input())
      if x<0:
          print("you did not enter a natural nubmer")
      else:
          if x > 1:
              for i in range(2, x//2):
                  if (x % i) == 0:
                      print(x, "is not a prime number")
                      for n in range (2, x-1):
                          if x%n==0:
                              print(n,end=" ")
                      break
              else:
                  print(x, "is a prime nubmer")
                  print([1,x])
          else:
              print(x, "is not a prime number")
              for n in range (2, x-1):
                          if x%n==0:
                              print[n]
      

      【讨论】:

      • 感谢您的回答。
      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      相关资源
      最近更新 更多