2014-12-03 147 views
-1

我有這個任務,我很新手數學和python。有誰知道如何解決這個問題?如何檢查結果是倍數(python)?

完成打印從1到100(含)的整數的這個函數。

1)對於那些的三個打印「嘶嘶聲」的倍數而不是 數

2)對於五種打印的倍數數的數「嗡嗡」代替 數目和

3)對於既三和五打印 倍數的數字「FizzBu​​zz」,而不是數量

我嘗試這樣做:

x=1 
while x <= 100: 


    if x/3 ==int and x/5 ==int: 
     print ("FizzBuzz") 
    elif x/3 == int: 
     print("Fizz") 
    elif x/5 == int: 
     print("Buzz") 
    else: 
     print(x) 
    x=x+1 

它不起作用。

回答

1

模運算符返回餘數,所以你必須檢查如果x其餘由35分等於0,所以

使用% modulas運營商。

if x%3 == 0 and x%5 == 0: 
    print ("FizzBuzz") 

elif x%3 == 0 : 
     print("Fizz") 
elif x%5 == 0 : 
     print("Buzz") 

,或者使用操作者not

if not x%3 and not x%5: 
    print ("FizzBuzz") 

30%30not 30%3True

或使用all()內建函數。

所有:(迭代)
│all(迭代) - > BOOL

│Return真如果布爾(x)是真在

if not all([x%3, x%5]): 
    print ("FizzBuzz") 
+0

@ user3270418檢查答案。 – 2014-12-03 11:25:40

+0

這樣比較好,但我認爲你的第二和第三代碼塊可能有點混亂。請修正運算符名稱的拼寫,它是「模數」或有時是「模數」; Python文檔使用第一種形式。 – 2014-12-03 11:27:07

1
for num in range(1,101): 
    if num%3==0 and num%5==0: 
     print("FizzBuzz") 

    elif num%3==0: 
     print("Fizz") 

    elif num%5==0:  
     print("Buzz") 

    else: 
     print(num) 

所有值x這裏%是返回餘數的模運算符。 除以3時,3的倍數具有0的餘數,以此類推。

0

你的邏輯很好,但你的Python語法錯誤。其他人已經告訴你如何使用模運算符%來做你想要的。所以我會告訴你爲什麼你發佈的代碼不起作用。

在Python 3,當使用操作者/結果是總是一個float(一個浮點數),即使答案可以被表示爲整數;強制Python使用整數值對整數值使用//運算符。因此,只需執行一次劃分,然後測試結果的類型是否爲int沒有幫助。

可以使用int關鍵字來測試一個對象是否爲整數,但執行該操作所需的語法與您編寫的語法稍有不同。正確的語法是像

a = 5 
isinstance(5, int) 

a = 5 
type(a) is int 

第一種形式是優選的。

關鍵字int實際上創建了一個type對象。正如你可能知道的,你可以把它作爲一個函數將對象轉換爲整數,例如int('5')將字符串'5'轉換爲整數5。但是您應該自己輸入int到解釋器中,看看會打印什麼。