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对不起,这是我的错误,谢谢你的编辑