簡體   English   中英

如何使輸出更具可讀性?

[英]How to make output more readable?

我編寫了以下代碼,該代碼可以將質數打印到所需的數字。

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]   

您對如何獲得所需的輸出有任何建議嗎?

為了實現您的目標(具有格式化的輸出),您必須對代碼進行一些更改,換句話說,使其變得“更加pythonic”:

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))

我在這里使用的是管道pformat(list(prime_number(...)))生成器-> list [1、2、3]->文本'[1、3,]'。 然后,將文本和數字number2放入格式化的字符串中,然后發送進行打印。

如果您是python的新手,並且不熟悉generators概念,則可以重寫prime_number函數,以使用簡單的.append到列表而不是產生列表,然后返回整個列表。

使用append到新列表:

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)

如果使用數組存儲這些質數,然后打印出來,可能會更好。

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)) 

您可以通過兩種方式進行打印。 將其存儲在列表中,然后打印或串行打印。

方法1 Use list and then print it as comma separated

import time
def prime_number(number1):
    output_list = list()
    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:
               output_list.append(desired_num)
    return output_list
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
output_list = prime_number(number2)
print (",".join(output_list))

方法2 Print the numbers in function itself serially using end

import time
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,end = " ")
  number2 = int(raw_input ("Enter any number :- "))
  print "Prime numbers between 1 and", number2, "are :-"
  prime_number(number2)    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM