2013-03-07 212 views
0
print("this program will calculate the area") 

input("[Press any key to start]") 

width = int(input("enter width")) 
if width < 0: 
    print ("please chose a number between 0-1000") 
    width = int(input("enter width")) 

if width > 1000000: 
    print ("please chose a number between 0-1000") 
    width = int(input("enter width")) 

height = int(input("Enter Height")) 

area = width*height 

print("The area is:",area) 

有沒有一種方法可以壓縮下面的代碼,例如將它們放在一起,這樣我就不必編寫除了less then和greater then語句兩次以外的同一行代碼。Python if語句

width = int(input("enter width")) 
if width < 0: 
    print ("please chose a number between 0-1000") 
    width = int(input("enter width")) 

if width > 1000000: 
    print ("please chose a number between 0-1000") 
    width = int(input("enter width")) 

我已經試過

width = int(input("enter width")) 
if width < 0 and > 10000: 
    print ("please chose a number between 0-1000") 
    width = int(input("enter width")) 

但我得到沒有愛。

我也不想鍵入

width = int(input("enter width")) 

聲明兩次,如果它能夠得到幫助。

感謝 本

+0

不錯的工作傢伙,Ty爲您的時間。 – BenniMcBeno 2013-03-08 00:10:28

回答

7

有幾種方法可以做到這一點。最明顯的是:

if width < 0 or width > 10000: 

,但我最喜歡的是這樣的:

if not 0 <= width <= 10000: 
+0

真的你在哪裏所有的禮拜這麼謝謝,但這一個最適合我:) – BenniMcBeno 2013-03-07 11:09:44

0

你想說

if width < 0 or width > 10000: 
    print ("please chose a number between 0-1000") 
    width = int(input("enter width")) 
+1

沒有人想說'寬度< 0 or > 10000'。 – eumiro 2013-03-07 09:51:34

+0

當然。更正:) – Himanshu 2013-03-08 10:05:12

0

if width < 0 and > 10000: 

應該讀

if width < 0 or width > 10000: 

或者:

if not 0 <= width <= 10000: 
0

你錯過可變寬度

if width < 0 or width> 10000: 
3

你需要一個循環。否則,如果用戶持久存在,用戶仍然可以輸入無效值。 while語句將循環與條件組合在一起 - 它保持循環,直到條件被破壞。

width = -1 
while width < 0 or width > 10000: 
    width = int(input("enter width as a positive integer < 10000")) 

您使用的,如果在原來的問題語句語法不正確:

if width < 0 and > 10000: 

你想:

if not (0 < width < 1000): 
    ask_for_new_input() 

,或者更明確的方式:

if width < 0 or width > 1000: 
    ask_for_new_input() 
0

如果:

print("this program will calculate the area") 

res = raw_input("[Press any key to start]") 

def get_value(name): 
    msg = "enter {0}".format(name) 
    pMsg = "please choose a number between 0-1000" 
    val = int(input(msg)) 
    while val not in xrange(1, 1001): 
     print pMsg 
     val = int(input(msg)) 
    return val 


print("The area is: {0}".format(get_value('width') * get_value('height')))