2017-07-13 24 views
0

このコードの助けが必要です。最初の回で階乗を計算しますが、それはwhileループでループするときに値を格納しているように見え、それをインクリメントします。助言がありますか?Python Factorial whileループ

#Get number and store in variable, also declare and initialize factorial variable 
number = int(input("Please enter a nonnegative integer number (or enter 0 to end program): ")) 
print() 
factorial= 1 

#Check if number is a negative integer and if it is, prompt for input again or give option to end program 
if number <0: 
    while number !=0 and number <0: 
     print("You have entered a negative integer. Please try again.") 
     number = int(input("Please enter a nonnegative integer number (or enter 0 to end program): ")) 
     print() 

#Calculate and display factorial of number while input is valid 
while number != 0 and number >=1: 
    #Calculate and display factorial value 
    while number >= 1: 
    factorial = factorial * number 
    number = number -1 
    print("The factorial for that number is: {}".format(factorial)) 
    print() 

    #Get the next number 
    number = int(input("Please enter another nonnegative integer number or enter 0 to end program: ")) 
    print() 

    #Check if newly entered number is a negative integer and if it is, prompt for input again or give option to end program 
    if number <0: 
    while number !=0 and number <0: 
     print("You have entered a negative integer. Please try again.") 
     print() 

     #Prompt again for valid nonnegative integer 
     number = int(input("Please enter a nonnegative integer number (or enter 0 to end program): ")) 
     print() 
+2

後であることをライン

factorial= 1 

を移動する必要があります。 [mcve]の提供方法を​​見てください。 –

+0

あなたはそうです。私はPythonコースを取っています。まだ初心者です。次に、関数とコードのモジュール化について学びます。それは冗長なコードを減らすのに役立ちます。 – Cornel

答えて

1

whileループの実行間で階乗の値をリセットしていません。あなたは冗長なコードの多くを持って

#Calculate and display factorial of number while input is valid 
while number != 0 and number >=1: 
+0

ありがとう、今私は理由を理解する。私は一番外側のwhileループにその行を配置しました。私はPythonが初めてです。 – Cornel