python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)
實(shí)驗(yàn)環(huán)境:python2.7
題目1:python之“求一個(gè)數(shù)的階乘并求結(jié)果中從后向前數(shù)第一個(gè)不為0(零)的數(shù)”
程序:
import math
def factorial(n): ? ? ? ? ? ?#定義一個(gè)函數(shù),返回一個(gè)數(shù)的階乘
if n==0:
? return 1
else:
? sum=n*factorial(n-1)
? return sum
def zero(num): ? ? ? ? ? ?#定義一個(gè)函數(shù),求一個(gè)數(shù)從后向前數(shù)第一個(gè)不為0(零)的數(shù)
if len(num)==1:
? print num
else:
?? for i in range(1, len(num)):
??? if num[-i] != "0":
???? print num[-i]
???? break
??? else:
???? continue
number=int(input("please input a number:"))
#調(diào)用函數(shù),這里筆者分了情況討論,如果鍵盤輸入為正整數(shù),則正常執(zhí)行,否則有報(bào)錯(cuò)提示
if number >= 0:
result=factorial(number)
print("%d" %result)
zero(str(result))
else:
print("Errors,please input a right number")
執(zhí)行結(jié)果:
題目2:求num的個(gè)數(shù):
??? 輸入一個(gè)正整數(shù)m,對(duì)于從1到m的正整數(shù) i 給1~m中 i 的倍數(shù)乘以(-1),
??? 給1到m的正整數(shù)中的每一項(xiàng)都做此操作,
??? 求最終剩下多少個(gè)正整數(shù)。
例如:
please input a number:5???????????????????????????????? //注意:標(biāo)紅的部分可以不用顯示
[-1, -2, -3, -4, -5]
[-1, 2, -3, 4, -5]
[-1, 2, 3, 4, -5]
[-1, 2, 3, -4, -5]
[-1, 2, 3, -4, 5]
3?????
即從1~5中執(zhí)行了5次操作,分別是1的倍數(shù),2的倍數(shù),3的倍數(shù),4的倍數(shù),以及5的倍數(shù),最后算出正整數(shù)剩余多少
當(dāng)輸入數(shù)為50時(shí),結(jié)果為43
程序:
m=int(input("please input a number:"))
a=[ ]
for x in range(1,m+1):
?a.append(x)
"""
列表a為1~50
"""
for i in range(1,m+1):
?for j in range(len(a)):
? if a[j]%i==0:
?? a[j]=a[j]*(-1)
?print a?????????? ? ? ? //該代碼用于打印出操作的過(guò)程,可注釋
num=0
for x in a:
?if x > 0:
? num=num+1
print num
程序結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: redis主从复制、高可用和集群
- 下一篇: python连接数据库,处理数据结果后生