2015-03-31 95 views
-3

我试图做一个程序,会要求2个值,s和n。 然后它会打印s * n s> 0,直到达到s。 例如我们进入5秒和3 n个 输出应该是:虽然循环python,s = s + 1

1 * 3 = 3 
2 * 3 = 6 
3 * 3 = 9 
4 * 3 = 12 
5 * 3 = 15 

我知道下面的代码是完全错误的“S * N =”是一个字符串。但我不知道如何去做。

s = int(input("Enter a number: ")) 
n = int(input("Enter a number: ")) 
while s>0: 
s = s+1 
print("s * n =", s*n) 

回答

0

你可以试试:

s = int(input("Enter a number: ")) 
n = int(input("Enter a number: ")) 
index = 0 

while index < s: 
    index = index + 1 
    print("{} * {} = {}" .format(index, s, index * s)) 
+0

如果用户对于s设定5和3为N,您的代码输出:1×5 = 5 2×5 = 10 3 * 5 = 15 ,那不符合@jake的需要。 – PageNotFound 2015-03-31 07:57:48

+0

你是对的,是变量名称的错误。谢谢! – gabriel 2015-03-31 08:04:31

0

问题是s等于5,如果s>0你将while循环执行,但你总是增加s,这意味着while循环永远不会停止。

我想你可以尝试:

s = int(input("Enter a number: ")) 
n = int(input("Enter a number: ")) 

i = 0 
while i < s: 
    i += 1 
    print("%d * %d = %d" % (i, n, i*n)) 
0

有很少的理由递增Python中的计数器。如果迭代列表,请使用for object in objects:。如果您需要索引,请使用for index,object in enumerate(objects)。在你的情况下,有range

s = int(input("Enter a number: ")) 
n = int(input("Enter a number: ")) 
for i in range(1,s+1): 
    print('{} * {} = {}'.format(i,n,i*n)) 

输出:

Enter a number: 5 
Enter a number: 3 
1 * 3 = 3 
2 * 3 = 6 
3 * 3 = 9 
4 * 3 = 12 
5 * 3 = 15 

注意range(a)产生0通过a-1range(a,b)通过b-1生产a

.format是一种从参数中构造字符串的有效方法。

参考文献:

range
format
Format Specification Mini-Language