2015-04-03 62 views
1

我是新來的python,我得到了我需要的一切,我需要在我的腳本運行除了我需要變量「一個」不被接受,如果它是「0」,如果它是「0」告訴用戶輸入一個數字其他比0.我該怎麼做?如何在python中測試變量?

1 #!/usr/bin python 3 
2 
3 import cmath 
4 import math 
5 import sys 
6 
7 print ("ax^2 + bx + c = 0") 
8 
9 while True: 
10 
11   try: 
12     a = float(input("Enter a: ")) 
13     b = float(input("Enter b: ")) 
14     c = float(input("Enter c: ")) 
15   except ValueError: 
16     print("Please enter a number!") 
17   else: 
18     print (a,"x^2 + ",b,"x + ",c," = 0") 
19     x = (b**2) - (4*a*c) 
20 
21     x1 = (-b+cmath.sqrt(x))/(2*a) 
22     x2 = (-b-cmath.sqrt(x))/(2*a) 
23 
24     print ("x1= ",x1) 
25     print ("x2= ",x2) 
26 
27 exit(0) 

〜 〜 〜 〜

+0

你已經得到了那裏除外......你可以在你的'try'中加上'如果不是:提高ValueError' ... – 2015-04-03 07:31:30

+0

try - > except - > else不是一個好的模式。 – 2015-04-03 07:35:17

+1

@Frank沒有什麼不對 - 我會去掉'else'但是... – 2015-04-03 07:36:59

回答

2

更改代碼的a輸入部分:

a = float(input("Enter a: ")) 
if a == 0.0: 
    print('a must be non-zero!') 
    continue 

continue聲明表示立即轉到(最內層)循環的頂部。

而不是continue聲明,如果你喜歡,你可以raise ValueError(正如喬恩所建議的)。

1

使用,如果:

if a != 0: 
    do something 
+0

是的,但是腳本中的輸入位置是? – 2015-04-03 07:36:52

+0

PM的代碼應該適合你。 – 2015-04-03 07:37:57

1

那麼你可能只是這樣做: 如果== 0: 打印 「!輸入一個有效的數字」 繼續

...併爲每個其他變量重複。使用條件語句。另外,如果使用float函數而不是int,它將會是「if a == 0.0」或「if a!= 0.0」

而且您可以創建一個def()函數來處理數字輸入節省打字如:

def input_number(): 
    while True: 
     try: 
      n=float(input()) 
      if n!=0.0: return n 
     except: 
      print "Enter a valid number!" 

然後只是把它想:

a=input_number() 
+0

不需要'if a == 0.0' ...'float(0)== int(0)'。 – 2015-04-03 07:35:33

+0

哈哈,對...我用2.7,所以我不熟悉他們的浮點數和輸入和文字。 :) – 2015-04-03 07:40:30

+0

@JonClements:'如果a == 0.0'不是必需的,但它的風格仍然很不錯,可以和like一樣進行比較。我可能只是使用'如果不是',但我試圖打破這種習慣。 :) – 2015-04-03 07:41:55