2016-08-01 48 views
0

您好我想遍历这个输入,如果资产负债不匹配账目结余的总和(PP,bfair,天空,FREDS WH)通过用户输入与循环,如果条件

while True: 
     try: 
      balance = float(raw_input('Balance:')) 
      print balance 
     except ValueError: 
      print"That's not a number" 
      continue 
     else: 
      break 
while True: 
     try: 
      bfair_balance = float(raw_input('bfair:')) 
      print bfair_balance 
     except ValueError: 
      print"That's not a number" 
      continue 
     else: 
      break 
while True: 
     try: 
      wh_balance = float(raw_input('wh:')) 
      print wh_balance 
     except ValueError: 
      print"That's not a number" 
      continue 
     else: 
      break 
while True: 
     try: 
      freds_balance = float(raw_input('freds:')) 
      print freds_balance 
     except ValueError: 
      print"That's not a number" 
      continue 
     else: 
      break 
while True: 
     try: 
      sky_balance = float(raw_input('sky:')) 
      print sky_balance 
     except ValueError: 
      print"That's not a number" 
      continue 
     else: 
      break 
while True: 
     try: 
      pp_balance = float(raw_input('pp:')) 
      print pp_balance 
     except ValueError: 
      print "That's not a number" 
      continue 
     else: 
      break 

我是否把这个所有在if语句满足条件的while循环中?

回答

0

是的。

,并考虑使用功能,以避免在你的代码重复:

def ask_float(msg): 
    while True: 
     try: 
      x = float(raw_input(msg)) 
      print x 
      return x 
     except ValueError: 
      print "That's not a number" 
      continue 


while True: 
    balance = ask_float('Balance:') 
    bfair_balance = ask_float('bfair:') 
    wh_balance = ask_float('wh:') 
    freds_balance = ask_float('freds:') 
    sky_balance = ask_float('sky:') 
    pp_balance = ask_float('pp:') 
    balance_sum = pp_balance + bfair_balance + sky_balance + freds_balance + wh_balance 
    if balance == balance_sum: 
     # balance is correct -> stop the loop 
     break 
    else: 
     print("put a nice error message here") 
+0

非常感谢。我会问如何压缩这些代码,因为确实有办法,而且你已经做到了!再次感谢,这是一个很大的帮助! – JJBridger