[英]Prime number and Perfect Square Checker in Python
我正在嘗試使用Python編寫我自己的質數和完美的平方檢查器,如果這是質數,該函數應該打印'Foo',如果這是一個完美的平方,則應該打印'Bar',如果這兩個都不是,則打印'FooBar'是我的代碼:
def FooBar():
prime = True
perfSqr = False
for target in range(100,100001):
for num in range(1,target+1):
if target % num == 0 and num != target:
prime = False
if target // num == num and target % num == 0:
perfSqr = True
if prime is True:
print 'Foo'
elif perfSqr is True:
print 'Bar'
else:
print 'FooBar'
if __name__ == '__main__':
FooBar()
無論如何,我根本無法運行它,任何人都可以給我一些提示嗎?
一些事情。 首先是您將num
從1
運行到target + 1
。 num % 1
始終為0,因此您永遠不會打印任何素數。
接下來,您將不會在perfSqr
迭代中重置prime
和perfSqr
標志。 另外,您需要在外部循環內移動打印語句,以便它們在每次迭代時都進行打印。
這按預期工作:
def FooBar():
for target in range(100, 100001):
prime = True
perfSqr = False
for num in range(2, target + 1):
if target % num == 0 and num != target :
prime = False
if target // num == num and target % num == 0:
perfSqr = True
if prime or perfSqr:
print(num, end=', ')
if prime:
print('Foo', end=', ')
elif perfSqr:
print('Bar', end=' ')
print('\n')
1)您的縮進已關閉-似乎您希望將if塊縮進,因此它位於第一個for循環內
2)您不要在第一個for循環中重置prime和perfSqr,因此一旦設置它們就永遠不會重置。
3)您的內部for循環范圍從1開始,應從2開始,否則似乎使所有數字為素數。
這是你想要的嗎?:
def FooBar():
for target in range(100,100001):
prime = True
perfSqr = False
for num in range(2,target+1):
if target % num == 0 and num != target:
prime = False
if target // num == num:
perfSqr = True
if prime is True:
print 'Foo'
elif perfSqr is True:
print 'Bar'
else:
print 'FooBar'
if __name__ == '__main__':
FooBar()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.