2015-03-31 123 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