簡體   English   中英

我怎樣才能讓我的for循環從try和except塊中停下來的地方繼續呢? Python 3

[英]How can i make my for loop continue from where it left off in the try and except block? Python 3

如果用戶未輸入數字,我希望程序捕獲錯誤。 如果用戶輸入字母或只是按“ enter”,則程序將從頭開始重新啟動for循環。 如何使它從輸入錯誤的地方開始?

#This is the size of the array 
YEAR_SIZE = 12

months = []                     ###This is the array that will hold the rainfall for each month 
monthNames=['January','February','March','April','May',
'June','July','August','September',
'October','November','December']

def getMonthlyRainfall():
  while True:
    try:
      total = 0
      for month in range(YEAR_SIZE):         ###This loop iterates 12 times for 12 entries
         print ("Enter the rainfall for",monthNames[month], "in inches")
         months.append(float(input()))
         continue
    except:
      print ("Try again") 

您可以使用另一個變量來跟蹤用戶給出的答案:

#This is the size of the array 
YEAR_SIZE = 12

months = []                     ###This is the array that will hold the rainfall for each month 
monthNames=['January','February','March','April','May',
'June','July','August','September',
'October','November','December']


def getMonthlyRainfall():
    ANSWERS = 0

    while True:
        try:
            total = 0
            for month in range(ANSWERS, YEAR_SIZE):         ###This loop iterates 12 times for 12 entries
                print ("Enter the rainfall for",monthNames[month], "in inches")
                x = input()
                months.append(float(x))
                ANSWERS = ANSWERS + 1
        except:
          print ("Try again") 

getMonthlyRainfall()

在這種情況下ANSWERS

在線檢查演示

YEAR_SIZE = 12

months = []                     ###This is the array that will hold the rainfall for each month 
monthNames=['January','February','March','April','May',
'June','July','August','September',
'October','November','December']

def getMonthlyRainfall():
  while True:
    total = 0
    for month in range(YEAR_SIZE):         ###This loop iterates 12 times for 12 entries1
       try:

         tmp = get_input(month)
       except ValueError:
         print ("Enter the rainfall for",monthNames[month], "in inches")
         tmp = get_input()
       months.append(tmp)
       continue

def get_input(month):
  try:
    print ("Enter the rainfall for",monthNames[month], "in inches")
    tmp = float(input())
  except ValueError:
    get_input(month)

這是一個更干凈的答案:

import calendar

def ask_for_rainfall(month_name):
    while True:
        try:
            return float(input("Enter the rainfall for %s in inches" % month_name))
        except:
            print('Try again')

def get_monthly_rain_fall():
    month_names = list(calendar.month_name[1:])
    return {m_name: ask_for_rainfall(m_name) for m_name in month_names}

# Now you can do
# rain_falls = get_monthly_rain_fall()
# print(rain_falls["January"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM