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

程序结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值