下午好。我需要在一行中写数字,并在一行中也打印结果。我需要做什么来解决此代码?目前,代码只能使用一个数字。
def test_prime(n):
if (n==1):
return False
elif (n==2):
return True;
else:
for x in range(2,n):
if(n % x==0):
return False
return True
答案 0 :(得分:1)
如果您有这样的数字列表:
numbers = [3,4,5]
您可以使用map()
将test_prime()
函数应用于列表中的每个值:
isprime = list(map(test_prime,numbers))
然后将结果打印在没有逗号/括号的一行上:
>> print(*isprime, sep = ' ')
True False True
编辑:由于您提到要在一行中输入数字而没有逗号,因此可以执行以下操作:
>>> numbers = input().split()
1 2 3 4 5
>>> numbers
['1', '2', '3', '4', '5']
答案 1 :(得分:1)
is_prime = lambda n: not any(n % i == 0 for i in range(2, n))
print([f'{i}: {is_prime(i)}' for i in range(1, 100)])
注意
any
很懒,除非有需要,否则不会迭代整个范围。range(2, n**0.5)
答案 2 :(得分:0)
您需要编写函数is_prime
,该函数将为您输入的字符串中的每个数字调用函数test_prime
,计算其是否为质数,然后返回结果字符串。
def test_prime(n):
if (n==1):
return False
elif (n==2):
return True;
else:
for x in range(2,n):
if(n % x==0):
return False
return True
def is_prime(s):
#Create list of numbers
nums = [int(n) for n in s.split()]
output = []
#Call test_prime for each number
for n in nums:
output.append(test_prime(n))
#Make a string out of results
result = ' '.join([str(op) for op in output ])
return result
s = input("Input numbers>>")
print(is_prime(s))
您的输出将是
Input numbers>>3 4 5
True False True
答案 3 :(得分:0)
仅使用一行即可打印
for i in range(10):
print(test_prime(i), end=' ')
注意要打印的end关键字参数,默认为'\ n'。传递其他字符串将防止打印后出现换行符。另请参见此处:print()
您还可以生成一个列表,然后使用str.join(),看起来像这样:
results = [test_prime(i) for i in range(10)]
print(', '.join(results))
答案 4 :(得分:0)
>>> [print(i,test_prime(i),end=', ') for i in (1,2,3,4,5,6,10,100,1000,1013)]
1 False, 2 True, 3 True, 4 False, 5 True, 6 False, 10 False, 100 False, 1000 False, 1013 True,