[英]Checking if a number in a list is bigger than the last number in the same list
[英]Generating a prime number bigger than a number found in a list
下面無法解決的問題:由於出現“ TypeError:'int'對象不可下標”,因此我無法使genPrim函數正常工作。
一些觀察:1.我的程序應該做的是首先將一個數字輸入到列表中,然后將其他功能應用於該數字。 2.問題是我似乎無法使用列表中的號碼來執行此操作。 我該怎么做? 我最初是想問問自己的位置,但是當選擇genPrim時,genPrim和Prim都可以工作,因為它們是相互依存的,但它們都要求相同的東西。
def Adauga(L):
n = int(input("Give number:"))
L = L + [n]
return L
#Verify if number is prime
def Prim(L):
poz = int(input("Position of number: "))
n = L[poz]
if n<2 :
return False
NrDiv=0
for a in range (2,int(n/2+1)):
if n%a==0:
NrDiv=NrDiv+1
if (NrDiv==0):
return True
else:
return False
#Generate prime number
def genPrim(L):
poz = int(input("Give number: "))
a = L[poz]
b=a+1
while Prim(b)==False:
b=b+1
return b
#Display menu
def AfisMeniu():
print()
print("1.Add number")
print("2.Check if number is prime")
print("3.Generate prime number")
print("0.End of program")
i = int(input("Your option: "))
return i
def Main():
"""
Start the program
"""
L = []
Opt = AfisMeniu()
while (Opt != 0):
if Opt == 1:
L=Adauga(L)
elif Opt ==2:
L=Prim(L)
print (L)
elif Opt ==3:
L=genPrim(L)
print (L)
else:
print ("Wrong!")
Opt = AfisMeniu()
print()
print("End of program")
Main()
因為genPrim
返回一個int
,但Main()
將該結果分配給L
,所以您得到了該錯誤,因此L
不再包含數字列表,而僅包含單個int
。
同樣, Prim()
返回一個布爾值( True
或False
),但Main()
將其分配給L
FWIW,您的Prim()
函數的基本邏輯是正確的,但是它是測試數字是否為質數的非常無效的方法。 至少應將其更改為在找到一個除數后立即返回False
,即當n%a==0
。
我設法使第三個選項起作用,就像生成素數一樣。 但是,我也希望使第二個選項也可以工作,即主要驗證。
我的想法是通過獲取該位置的len來修改Main()函數中的代碼,但是我不能真正使其工作。
elif Opt ==2:
L=Prim(L)
poz1=int(len(L))
print (L[poz1])
還是應該嘗試其他方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.