我正在尝试学习一些代码,并找到了python。我只是一个初学者,但对编程语言感兴趣。
我在编写第一个程序时遇到了一些麻烦。我正在尝试制作一个程序,要求用户输入一个数字,然后检查该数字是否为素数,如果是,则将其添加到素数列表中。
这是我的代码。
prime = [2,3,5,7]
get = int(input("what number do you want to check ? "))
a = 0
while a < len(prime):
print("Test " + str(a+1))
test = (get / prime[a])
if isinstance(test, int):
print(str(get) + " is not a prime number" )
break
else:
a += 1
else:
prime.extend(get)
print(str(get) + " is a prime number, prime number added to list"
答案 0 :(得分:2)
prime.extend(get)
extend
用于向列表添加列表。如果您只想添加单个值,请使用append
。
prime.append(get)
答案 1 :(得分:1)
考虑到你设置它的方式,你会得到26是一个素数。因为它只能被13整除,并且13还没有在表中,所以它会在一段时间内掉落。你需要找到少于你要求填充表格的数量的所有素数,或者设置程序找到前n个素数。
我注意到if上的else是错误的缩进。
你应该在if和not division上使用模运算符,因为我得到整数除法而不是浮点。
我将修复程序放在下面的代码中。
请注意,问题是您在使用追加时使用的是扩展名。
append
:在最后添加对象。
x = [1, 2, 3]
x.append([4, 5])
print (x)
为您提供:[1, 2, 3, [4, 5]]
extend
:通过附加迭代中的元素来扩展列表。
x = [1, 2, 3]
x.extend([4, 5])
print (x)
为您提供:[1, 2, 3, 4, 5]
以下是使用modulo进行测试而不是除法的代码。这显示了正确的情况。请注意,在进行除法并获得浮点结果时,isinstance()可能无法给出正确的答案。有许多消息来源建议不要将其用作测试。
如果您使用的是Python 3.0,那么您将得到一个浮点响应,而不是一个int答案。见Python integer division yields float
prime = [2,3,5,7]
get = int(input("what number do you want to check ? "))
a = 0
while a < len(prime):
print("Test " + str(a+1))
if (get % prime[a]) == 0:
# Number was evenly divisible by a prime number
print(str(get) + " is not a prime number" )
break
else:
a += 1
else:
# Number was not evenly divisible by primes already in table
prime.append(get)
print(str(get) + " is a prime number, prime number added to list"