2017-09-24 102 views
0
x = int(input('Enter x: ')) 
y = int(input('Enter y: ')) 

product = 0 
## 50 in border 
border = str('-------------------------------------------------------') 
print(border) 
print('%15s' % 'x', '%15s' % 'y', '%23s' % 'product') 
print(border) 

if y < x: 
    temp = x 
    x = y 
    y = temp 
xTwo = x 
yTwo = y 

productTwo = x*y 

while not x <= 0: 

    if x % 2 == 0: 
     x = x/2 
     y = y*2 

    else: 
     x = x - 1 
     product = product + y 

    print('%15d' % x, '%15d' % y, '%23d' % int(product)) 

else: 
    print(border) 
    print(xTwo, '*', yTwo, '=', productTwo) 

**下面是它生成的内容。在循环中,我希望第一个数字行读取'12 14 0',但我不确定在哪里需要放置打印行以便发生,或者如果我可以稍微更改循环以产生结果****Loop不打印正确的输出

Enter x: 12 
Enter y: 14 
------------------------------------------------------- 
      x    y     product 
------------------------------------------------------- 
      6    28      168 
      3    56      168 
      2    56      224 
      1    112      224 
      0    112      336 
------------------------------------------------------- 
12 * 14 = 168 
+0

尝试把打印线在循环开始后右:'而不是X <= 0: 打印( '%15d的' %的x, '%15d的' %Y, '%23d的' %INT(产品))' – davedwards

回答

0

问题出在打印语句的位置。你需要把它放在while循环的第一行。如果你不这样做,那么x%2 = 0条件变为真,并且x值被改变。

x = int(input('Enter x: ')) 
y = int(input('Enter y: ')) 

product = 0 
## 50 in border 
border = str('-------------------------------------------------------') 
print(border) 
print('%15s' % 'x', '%15s' % 'y', '%23s' % 'product') 
print(border) 

if y < x: 
    temp = x 
    x = y 
    y = temp 
xTwo = x 
yTwo = y 

productTwo = x*y 

while not x <= 0: 
    print('%15d' % x, '%15d' % y, '%23d' % int(product)) 

    if x % 2 == 0: 
     x = x/2 
     y = y*2 

    else: 
     x = x - 1 
     product = product + y 


else: 
    print(border) 
    print(xTwo, '*', yTwo, '=', productTwo)