实验环境: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
程序结果: