作业-python循环函数综合练习

# -*- coding:utf-8 -*-
# #1.将阶乘改成函数形式进行调用
# def func(num):
#     #求一个数字的阶乘,例如5!
#     sum=1
#     for i in range(1,num+1):
#         sum=sum*i
#     return sum
#
# print(func(5))


#2,写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度.
# def main():
#     str=input('请输入字符串:')
#     print('字符串的长度为%d'%len(str))
#
# main()



#3,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
# list=[]
# for x in range(1,5):
#     for y in range(1,5):
#         for z in range(1,5):
#             if (x!=y) and (y!=z) and (z!=x):
#                 list.append('%d%d%d'%(x,y,z))
# print('能组成%d个三位数'%len(list))
# print('这些三位数是%s'%list)


# 4,企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%;
# 利润高于10万元,低于20万时,低于10万元的部分按10%提成,高于10万的部分,
# 可提成7.5%;20万到40万之间时,高于20万的部分,可提成5%;40万到60万之间时
# 高于40万元的部分,可提成3%;60万到100万之间时,高于60万的部分,可提成1.5%,
# 高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发奖金
# 总数?


# I=int(input("请输入当月利润I:"))
# if I <=10:
#     bonus=I * 0.1
# elif I > 10 and I <= 20:
#     bonus=10 * 0.1 + (I-10) * 0.075
# elif I > 20 and I <= 40:
#     bonus=10 * 0.1 + 10 * 0.075 + (I-20) * 0.05
# elif I > 40 and I <= 60:
#     bonus=10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (I-40)*0.03
# elif I > 60 and I <= 100:
#     bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (I-60)*0.015
# elif I > 100:
#     bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40*0.015 + (I-100)*0.01
#
# print('应发奖金总数为%.3f万元'%bonus)



# 5,一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
# (求1000以内的所有满足条件的数)

# for i in range(1,1000):
#     for j in range(1,1000):
#         for k in range(1,1000):
#             if i+100==j*j and j*j+168==k*k:
#                 print('该数是%d'%i)


# 6,打印出所有的'水仙花数',所谓'水仙花数'是指一个三位数,其各位数字立方和等于
# 该数本身.例如:153是一个'水仙花数',因为153=1的三次方+5的三次方+3的三次方.
# list1=[]
# for i in range(100,1000):
#     x=i//100
#     y=i%100//10
#     z=i%100%10
#     if x**3+y**3+z**3==i:
#         list1.append(i)
# print(list1)




# 7,将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5
# 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
# (1)如果这个质数恰好等于n,则说明分解质因数的过程已经结束,打印出即可.
# (2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
# 重复执行第一步.
# (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步.

# list1=[]
# num=int(input('请输入一个数:'))
#
# for i in range(2,num):
#     while True:
#         if num%i==0:
#             list1.append(i)
#
#             num=num/i
#         else:
#             break
#
# print(list1)




# 8,有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中.

# n=[2,4,6,8,10,12]
# m=int(input('输入一个数字:'))
# n.append(m)
# n.sort()
# print(n)




# 9,求s=a+aa+aaa+aaaa+aa..a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加)
# 几个数相加有键盘控制.
# 程序分析:关键是计算出每一项的值.需要输入两个值a和n. 提示使用函数,raw_input,input,eval

# a=input("请输入数字:")
# n=int(input("请输入几个数相加:"))
# r=[]
# for i in range(1,n+1):
#     r.append(int(a*i))
# print(r)
# print(sum(r))



# 10,一个数如果恰好等于它的因子之和,这个数就称为'完数'.例如6=1+2+3.编程找出1000以内的所有完数.

# dd={}
# for i in range(2,1001):
#     list1=[]
#     s=i
#     for j in range(1,i):
#         if i%j==0:
#             list1.append(j)
#             s-=j
#     if s==0:
#         dd[i]=list1
#
# print(dd)

posted @ 2019-03-26 22:26  程简单  阅读(744)  评论(0编辑  收藏  举报