Python,程序将数字乘以2直到它大于1000,具有语法问题

时间:2017-12-04 18:03:12

标签: python loops nested

当我把ourum放在循环之外时,它将它无限乘以2

usernum=float(input('Enter a number: ')) 
if usernum<=0 or usernum>1000:              
    print('Your number is '+str(usernum))
else:
     oursum=usernum*2
     while oursum<=1000:
          print('Multiplied by 2 equals '+str(oursum))

在里面时,它没有被定义。

usernum=float(input('Enter a number: ')) 
if usernum<=0 or usernum>1000:              
   print('Your number is '+str(usernum))
else:

     while oursum<=1000:
          oursum=usernum*2
          print('Multiplied by 2 equals '+str(oursum))

我理解我正在制造的问题,但我不知道如何纠正这一问题而不会让它变得不必要地长而复杂。提前谢谢。

3 个答案:

答案 0 :(得分:2)

问题是您在oursum内保存了乘法的结果,但您之后不再使用oursum继续乘法。 以下内容应该有效,并且不会增加代码的复杂性:

usernum=float(input('Enter a number: ')) 
if usernum<=0 or usernum>1000:
    print('Your number is '+str(usernum))
else:
    oursum = usernum  # oursum starts from usernum and it will get bigger through each iteration
    while oursum<=1000:
        oursum=oursum*2
        print('Multiplied by 2 equals '+str(oursum))

答案 1 :(得分:0)

在第二个代码中,您在定义它之前在while语句的条件中使用oursum。因此,在while循环之前定义oursum并指定一个类似0

的值
usernum=float(input('Enter a number: ')) 
if usernum<=0 or usernum>1000:              
   print('Your number is '+str(usernum))
else:
     oursum = 0 #like this
     while oursum<=1000:
          oursum=usernum*2
          print('Multiplied by 2 equals '+str(oursum))

答案 2 :(得分:0)

ifwhile中的条件非常相似,您可以在一次测试中合并两者。定义一个函数以便能够更容易地重用和测试它也是一个好主意:

def transform(number):
    while 0 < number <= 1000:
        number *= 2
    return number


if __name__ == '__main__':
    user_num = float(input('Enter a number: '))
    print('After transformation, your number is', transform(user_num))