在此 python 代码中,WHILE 循环无法正常工作,并且在分配之前" "引用的局部变量'Owner_Id'显示此错误



我尝试了我能做的一切:这段代码是MySQL Python连接项目的一部分。在这种情况下,我想通过选择"while"来退出while循环;CHOICE 4";

print ("starts")
def parkingdet():

print('=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷==')


print("                                                    ")
print("<<<< 𝐄𝐍𝐓𝐄𝐑 𝟏 𝐅𝐎𝐑 𝐁𝐈𝐊𝐄  >>>>")
print("<<<< 𝐄𝐍𝐓𝐄𝐑 𝟐 𝐅𝐎𝐑 𝐂𝐀𝐑   >>>>")
print("<<<< 𝐄𝐍𝐓𝐄𝐑 𝟑 𝐅𝐎𝐑 𝐁𝐎𝐓𝐇 >>>>")
print("<<<< 𝐄𝐍𝐓𝐄𝐑 𝟒 𝐓𝐎 𝐄𝐗𝐈𝐓   >>>>")


choice1=int(input("Enter Vehicle Type: "))                         

soc7=1
while soc7 == 1:
if choice1 == 1:                                                   

Owner_Id=input('Enter your Owner ID (stars from 101) : ')            
NO1 = int(input("ENTER NO. OF VEHICLES: "))
Vehicle="Bike"+"-"+str(NO1)
Monthly_Bill = 500*NO1
Yearly_Bill = Monthly_Bill*12
break


elif choice1 == 2:  
#Entry for Car
Owner_Id=input('Enter your Owner ID (stars from 101) : ') 
NO = int(input("ENTER NO. OF VEHICLES: "))
Vehicle="Car"+"-"+str(NO)
Monthly_Bill = 1000*NO
Yearly_Bill = Monthly_Bill*12
break


elif choice1 == 3:            
Owner_Id=input('Enter your Owner ID (stars from 101) : ')
Vehicle="Car,Bike"
Monthly_Bill = 1500
Yearly_Bill = 1500*12
break



elif choice1 == 4:
soc7=0   


else:
print("++++++++++++++++++++++++++")
print("<<<< 𝐈𝐍𝐕𝐀𝐋𝐈𝐃 𝐂𝐇𝐎𝐈𝐂𝐄 ❗ >>>>")
print("++++++++++++++++++++++++++")
break



print('=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷==')
value=(Owner_Id,Vehicle,Monthly_Bill,Yearly_Bill)
query='insert into parkingdet values(%s,%s,%s,%s)'

cursor.execute(query,value)
con.commit()

print("𝐎𝐰𝐧𝐞𝐫-𝐈𝐃 𝐲𝐨𝐮 𝐡𝐚𝐯𝐞 𝐄𝐧𝐭𝐞𝐫𝐞𝐝 𝐢𝐬",Owner_Id)

print(" <<<<         𝓣𝓱𝓪𝓷𝓴 𝓨𝓸𝓾          >>>>")
print('=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷=̷==')
parkingdet() 
#END OF THIS PORTION

我的控制台显示的错误是:

UnboundLocalError: local variable 'Owner_Id' referenced before assignment

如果用户的选择不在选项或return None中而不是中断,则需要默认值

else:
print("++++++++++++++++++++++++++")
print("<<<< 𝐈𝐍𝐕𝐀𝐋𝐈𝐃 𝐂𝐇𝐎𝐈𝐂𝐄 ❗ >>>>")
print("++++++++++++++++++++++++++")
return None  #not break

最新更新