答: 在這里我的思路是利用Python函數(shù)同時(shí)接受多個(gè)參數(shù),然后在函數(shù)的內(nèi)部,它的功能是返回各輸入?yún)?shù)對(duì)應(yīng)的乘積。如下所示,可以使用*nums作為輸入?yún)?shù)以同時(shí)接受多個(gè)參數(shù)。對(duì)應(yīng)代碼如下所示:
郊區(qū)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
本次例子是對(duì)1,3,5,7和9進(jìn)行累乘,本次的結(jié)果為945,如下所示,計(jì)算正確。
同樣地,我們也可以使用其他例子進(jìn)行測(cè)試,也可以得到正確的結(jié)果。
按照題目要求編寫(xiě)的Python階乘程序如下
def factorial(n): #定義階乘函數(shù)
f=1 #累乘器賦初值1
for i in range(1,n+1): #for_i循環(huán)變量i從1到n變化
f=f*i #f累乘i
return f #返回n的階乘結(jié)果f
n=int(input("請(qǐng)輸入n:")) #輸入n的值
print(factorial(n)) #打印n!結(jié)果
源代碼(注意源代碼的縮進(jìn))
代碼如下:
#coding=utf-8
n?=?int(input('請(qǐng)輸入一個(gè)正整數(shù):'))
num?=?1
for?i?in?range(1,?n?+?1):
num?=?num?*?i
print('結(jié)果:',?num)
運(yùn)行結(jié)果:
import math
n = int(input("請(qǐng)輸入一個(gè)正整數(shù):"))
# 計(jì)算階層
result = math.factorial(n)
# 輸出結(jié)果
print("{}! = {}".format(n, result))
解法1
數(shù)組解法牛。
首先定義一個(gè)ns數(shù)組用來(lái)存儲(chǔ)n!的各個(gè)位數(shù)上的數(shù)值,利用for循環(huán)給ns加入10000個(gè)0值,以方便后面直接根據(jù)index對(duì)數(shù)組進(jìn)行操作。
然后定義length作為 “數(shù)組的長(zhǎng)度”(有真實(shí)數(shù)值的而非自動(dòng)添加的0) 也即n!的結(jié)果的位數(shù)。
之后也必須用到for循環(huán)進(jìn)行累乘,但跟解法一的直接累乘不同,這里是乘數(shù)(即i)跟各個(gè)位上的數(shù)分別相乘,若結(jié)果大于等于10則carry0即向前進(jìn)一位數(shù)值為carry,若j循環(huán)結(jié)束后carry0則說(shuō)明需要在當(dāng)前ns的“長(zhǎng)度”上進(jìn)一位,所以length+1即位數(shù)+1,這里carry起的就是判斷是否進(jìn)位的作用,而length則代表著結(jié)果的位數(shù)。
n= int(input())
ns = [0 for i in range(10000) ]
n= int(input())
ns = [0 for i in range(10000) ]
length = 1
ns[0] = length = 1
if n=2:
#for i in range(2,n+1):
##carry = 0
##for j in range(length):
###temp = ns[j] * i + carry
###carry = int(temp/10)
###ns[j] = temp % 10
##while carry0:
###ns[length] += carry%10
###length+=1
###carry = int(carry/10)
while length0:
#length -=1
#print(ns[length],end='')
把# 替換為空格就可以運(yùn)行。
如輸入1000,計(jì)算1000!
解法2
print()
m=int(input("計(jì)算m!,請(qǐng)輸入整數(shù)m:"))
import math
a=sum([math.log10(i) for i in range(1,m+1)])
b=int(a)
c=a-b
print(f'{m}!={10**c}*10^')