2017-02-20 155 views
1

當我運行這個Python代碼時,我得到一個NameError。但是在這段代碼中,我試圖獲得一個在循環外部使用的for循環(get)中定義的變量。如何在外部循環中使用此變量(獲得)我如何獲得循環外部for循環中定義的變量? -Python

file = open("f:/py/price.txt", "r") 

valRange = 0 
cal = 0 
totalCst = 0 
itmCnt = 0 
while (valRange < 10): 
    idNumber = int(input("Enter Id number: ")) 
    for line in file: 
      if line.startswith(str(idNumber)): 
       get = line.split("=")[1] 
      break 
    quantity = int(input("Enter qantity: ")) 
    cal = quantity * int(get) 
    totalCst += cal 
    itmCnt += quantity 

print (totalCst) 
+0

你不需要額外的東西。也許什麼也沒有分配給它。 – wwii

回答

1

只是在循環之前初始化變量。 break命令也不在if之內。 嘗試:

file = open("f:/py/price.txt", "r") 

valRange = 0 
cal = 0 
totalCst = 0 
itmCnt = 0 
while (valRange < 10): 
    idNumber = int(input("Enter Id number: ")) 
    get = 0 
    for line in file: 
      if line.startswith(str(idNumber)): 
       get = line.split("=")[1] 
       break 
    quantity = int(input("Enter qantity: ")) 
    cal = quantity * int(get) 
    totalCst += cal 
    itmCnt += quantity 

print (totalCst) 
+0

它的工作。但是我在腳本中發現了一些錯誤。無論如何謝謝:) –

+0

太棒了!請不要忘記將答案標記爲正確的答案。 – spilafis

0

縮進break更多。

for line in file: 
     if line.startswith(str(idNumber)): 
      get = line.split("=")[1] 
      break 

另外如果沒有匹配的行呢?那麼get就沒有價值了。如果沒有行匹配,請確保跳過後續代碼。