Python 如何使输出更具可读性?

Python 如何使输出更具可读性?,python,python-2.7,output,readability,Python,Python 2.7,Output,Readability,我编写了以下代码,将素数打印到所需的数字 def prime_number(number1): for desired_num in range(1,int(number1)+1): if desired_num > 1: for i in range(2,desired_num): if (desired_num % i) == 0: break else:

我编写了以下代码,将素数打印到所需的数字

def prime_number(number1):
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
              break
          else:
              print(desired_num)
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
prime_number(number2)    
我得到的输出类似于下面的输出,这对于一个包含许多数字的列表来说非常麻烦

2   
3  
5  
7  
我想要的输出类似于下面的输出

[2, 3, 5, 7]   
您对如何获得所需输出有何建议?

使用“附加到新列表中”:

import time
def prime_number(number1):
    l=[]
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
              break
          else:
              l.append(desired_num)
    print(l)
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
start = time.time()
prime_number(number2)
print(time.time() - start)
使用“附加到新列表”:

import time
def prime_number(number1):
    l=[]
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
              break
          else:
              l.append(desired_num)
    print(l)
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
start = time.time()
prime_number(number2)
print(time.time() - start)

一个简单的想法是将素数列表存储在python内置列表中,然后简单地以您喜欢的格式打印它!就这么简单

def prime_number(number1):
    primes = [] # An empty list here, that will be populated with primes!
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
                  break
          else:
              primes.append(desired_num)
    print "[" + ",".join(map(str, primes)) + "]" 

number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
primes = prime_number(number2)

一个简单的想法是将素数列表存储在python内置列表中,然后简单地以您喜欢的格式打印它!就这么简单

def prime_number(number1):
    primes = [] # An empty list here, that will be populated with primes!
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
                  break
          else:
              primes.append(desired_num)
    print "[" + ",".join(map(str, primes)) + "]" 

number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
primes = prime_number(number2)

您可以采用两种方式进行打印。将其存储在列表中,然后打印或连续打印

方法1使用列表,然后以逗号分隔打印:

方法2使用end:


您可以采用两种方式进行打印。将其存储在列表中,然后打印或连续打印

方法1使用列表,然后以逗号分隔打印:

方法2使用end:


如果使用数组存储这些素数,然后将其打印出来,效果会更好

import time

def prime_number(number1):
    primes = []
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
                  break
          else:
              primes.append(desire_num)
    return primes

number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
print(prime_number(number2)) 

如果使用数组存储这些素数,然后将其打印出来,效果会更好

import time

def prime_number(number1):
    primes = []
    for desired_num in range(1,int(number1)+1):
       if desired_num > 1:
          for i in range(2,desired_num):
              if (desired_num % i) == 0:
                  break
          else:
              primes.append(desire_num)
    return primes

number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
print(prime_number(number2)) 

为了实现格式化输出的目标,您必须对代码进行一些更改,换句话说,使其更具Python风格:

import time
from pprint import pprint, pformat
from typing import Iterable


def prime_number(number1):
    """
    generator
    :rtype: Iterable[int]
    :type number1: int
    """
    for desired_num in range(1, int(number1) + 1):
        if desired_num > 1:
            for i in range(2, desired_num):
                if (desired_num % i) == 0:
                    break
            else:
                yield desired_num


number2 = int(raw_input("Enter any number :- "))
primes = pformat(list(prime_number(number2)))
print("Prime numbers between 1 and {} are :- {}".format(number2, primes))
我在这里使用的是管道:pformatlistprime\u编号。。。生成器->列表[1,2,3]->文本“[1,3,3]”。 然后,我将文本和数字2放入一个格式化字符串中,并发送打印


如果您是python初学者并且不熟悉生成器概念,您可以重写素数函数以使用简单的。附加到列表而不是生成列表,然后返回整个列表。

要实现您的目标,格式化输出,您必须对代码进行一些更改,换句话说,让它更像蟒蛇:

import time
from pprint import pprint, pformat
from typing import Iterable


def prime_number(number1):
    """
    generator
    :rtype: Iterable[int]
    :type number1: int
    """
    for desired_num in range(1, int(number1) + 1):
        if desired_num > 1:
            for i in range(2, desired_num):
                if (desired_num % i) == 0:
                    break
            else:
                yield desired_num


number2 = int(raw_input("Enter any number :- "))
primes = pformat(list(prime_number(number2)))
print("Prime numbers between 1 and {} are :- {}".format(number2, primes))
我在这里使用的是管道:pformatlistprime\u编号。。。生成器->列表[1,2,3]->文本“[1,3,3]”。 然后,我将文本和数字2放入一个格式化字符串中,并发送打印


如果您是python初学者并且不熟悉生成器的概念,您可以重写素数函数以使用简单的。附加到列表而不是生成它,然后返回整个列表。

始终有printdesired\u num,end=''。丑陋的黑客,你可能想要的。我只是重新阅读代码。删除函数中的print,并返回一个列表,以便prime_num返回一个迭代器。printdesired_num,end=''是Python 3-OP已经标记了他们的问题[Python-2.7],并且在显示的代码中有一个print作为语句行。。。在Python2的上下文中,一个更相关的答案是printdesired\u num,注意结尾的逗号。丑陋的黑客,你可能想要的。我只是重新阅读代码。删除函数中的print,并返回一个列表,以便prime_num返回一个迭代器。printdesired_num,end=''是Python 3-OP已经标记了他们的问题[Python-2.7],并且在显示的代码中有一个print作为语句行。。。在Python2的上下文中,更相关的答案是print desired_num,注意结尾的逗号。在append语句中,将变量更改为desired_num,append语句将变量更改为desired_num,我认为else条件应该是for循环,而不是if条件。在方法1中省略逗号,在最后一个print语句中给出所需的输出,但在方法2中结束给出python 2中的错误。x@Lucifer说得对。编辑解决方案谢谢!!我认为else条件应该是for循环,而不是if条件。在方法1中省略逗号,在最后一个print语句中给出所需的输出,但在方法2中结束给出python 2中的错误。x@Lucifer说得对。编辑解决方案谢谢!!如果我输入一个大于等于73的数字,它不会给出所需结果的输出。如果我输入一个大于等于73的数字,它不会给出所需结果的输出。@skaul05对不起,这是我的错误,谢谢您的帮助edit@skaul05对不起,这是我的错误,谢谢你的编辑