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 语句两次。

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"))

如果可以帮助,请声明两次。

谢谢本

4

6 回答 6

7

有几种方法可以做到这一点。最明确的是:

if width < 0 or width > 10000:

但我最喜欢的是:

if not 0 <= width <= 10000:
于 2013-03-07T09:34:32.547 回答
3

你需要一个循环。否则,如果他们是持久的,用户仍然可以输入无效值。while 语句将循环与条件结合在一起——它一直循环直到条件被破坏。

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

您在原始问题中使用 if 语句在语法上不正确:

if width < 0 and > 10000:

你要:

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

或者,以更明确的方式:

if width < 0 or width > 1000:
    ask_for_new_input()
于 2013-03-07T09:35:50.267 回答
0

你想说

if width < 0 or width > 10000:
    print ("please chose a number between 0-1000")
    width = int(input("enter width"))
于 2013-03-07T09:34:23.237 回答
0

if width < 0 and > 10000:

应该读

if width < 0 or width > 10000:

或者:

if not 0 <= width <= 10000:
于 2013-03-07T09:34:23.620 回答
0

你错过了可变宽度

if width < 0 or width> 10000:
于 2013-03-07T09:35:34.710 回答
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')))
于 2013-03-07T09:44:32.480 回答