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