python常见循环练习
第一题:求5的阶乘
# 方法1,递归
def jc(num):
if num == 1:
return 1
else:
return num*jc(num-1)
print(jc(5)) # 方法2,for遍历
def func(num):
sum = 1
for i in range(1,num+1):
sum*=i
return sum
func(5)
print(func(5))
# 方法3,lambda表达式
# lambda不能调用数组,如列表。
# 这里需要借助一个函数去做(这个函数调用了lambda表达式作为参数,即需要使用高阶函数reduce#使用高阶函数,
# 需要调用一个模块# 将阶乘改成函数形式进行调用functools
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,6)))
第二题:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
if __name__ == '__main__':
s = input('please input a string:\n')
print ('the string has %d characters.' % len(s)) def func(a): #定义一个求字符串长度的函数
'求一个字符串的长度'
len=0
for i in a:
len+=1
return len
if __name__=='__main__': #main函数, __name__=='__main__'将函数私有化了,外部调用不了main下面的内容。 str_input=input('请输出一个字符串') #实现在main函数中输入字符串
str_len=func(str_input) #通过调用外部的函数func(a),并传递实际参数str_input,实现在main函数计算字符串长度。
print("输入字符串长度:", str_len)
第三题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
i = 0
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):
i += 1
if i%4:
print("%d%d%d" % (x, y, z), end=" | ")
else:
print("%d%d%d" % (x, y, z))
print ("合计个数:",i)
第四题:企业发放的奖金根据利润提成。利润(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('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]#分成6段提成
rat = [0.01,0.015,0.03,0.05,0.075,0.1]#每段提成对应的税率
r = 0
for idx in range(0,6):#索引有6个数
if i>arr[idx]:
r+=(i-arr[idx])*rat[idx]
# print (r)
i=arr[idx]
print (r)
第五题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
if __name__=="__main__":
x=1
i=1
while x!=0:
x = int((i+100)**0.5)
y = int((i+100+168)**0.5)
if x*x==(100+i) and y*y==(100+168+i):
print(i)
x = 0
i+=1
第六题:水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
解法一:用a,b,c拼凑一个三位数
for a in range(1,10):
for b in range(0,10):
for c in range(0,10):
s1 = a*100+b*10+c
s2 = pow(a,3)+pow(b,3)+pow(c,3)
if s1==s2:
print('水仙花:%d'%s1) 解法二:直接定义i为水仙花数来求它的元素
for i in range(100,1000):
s = str(i)
if int(s[0])**3+int(s[1])**3+int(s[2])**3==i:
print('水仙花:',i) 解法三:用divmod根据余数和商来求出三位数
for n in range(100,1000):
m = n
sumValue = 0
while(m>0):
(m,r) = divmod(m,10)
sumValue +=r**3
if n ==sumValue:
print('水仙花:',n)
第七题:将一个正整数分解质因数,例如:输入90,打印出90=2*3*3*5
import math
number = int(input("Enter a number: "))
list = []
def getChildren(num):
print('*' * 30)
isZhishu = True
i = 2
square = int(math.sqrt(num)) + 1
while i <= square:
if num % i == 0:
list.append(i)
isZhishu = False
getChildren(num / i)
i += 1
break
i += 1
if isZhishu:
list.append(num)
getChildren(number)
print(list)
第八题:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
if __name__ == '__main__':
a = [1,13,28,40,100,0]# 0 作为加入数字的占位符
print('原始列表:')
for i in range(len(a)):
print (a[i],)
number = int(input("插入一个数字:"))
end = a[4]
if number > end:
a[5] = number
else:
for i in range(5):
if a[i] > number:
temp1 = a[i]
a[i] = number
for j in range(i + 1,6):
temp2 = a[j]
a[j] = temp1
temp1 = temp2
break
print ('排序后列表:')
for i in range(6):
print (a[i],)
第九题: 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入
注意:第1个 for 循环,range()得从1开始计数,这样子第2个 for 循环一开始才能至少循环一次(如果 i = 0,那么 range(i) 就循环不起来了。
# a = int(input('请输入数字a:'))
# count = int(input('请输入几个数相加:'))
# res = 0#初始化最终求解
# for i in range(1,count+1):#循环次数与输入的值一样,但从1开始循环
# t = 0#临时用的变量
# for j in range(i):
# t = t + 10**j#先计算10**0+10**1+....+10**j
# res = res +(a*t)#再计算a*t
# print(res)
第十题:找出1000以内的所有完数。什么是“完数”:
一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.
for i in range(2,1001):#遍历1000以内的所有数,从2开始
s = i #把取出的数赋值给另一个变量s,用于与所有因子作差,如果减去所有因子后结果为0,这个数是完数
for j in range(1,i): #查找因子
if i % j == 0: #找出因子
s -=j #与因子作差
if s == 0: #判断是否是完数
print(i) 完善写法:
for i in range(2, 1001):
k = [] # 用于收集一个数的所有因子
n = -1 #
s = i
for j in range(1, i):
if i % j == 0:
n += 1
s -= j
k.append(j) # 收集所有因子 if s == 0:
print(i, ":") # 打印完数
for j in range(n): # 遍历完数的所有因子
print(str(k[j]), end='+ ') # 打印出所有的因子
print(k[n]) # 打印
python常见循环练习的更多相关文章
- Python常见的错误汇总
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 错误: [错误分析]第二个参数必须为类,否则会报TypeError,所以正确的应 ...
- Python常见十六个错误集合,你知道那些?
使用python会出现各种各样的错误,以下是Python常见的错误以及解决方法. 1.ValueError: 'Conv2d_1a_3×3' is not a valid scope name 这个是 ...
- Python for循环学习总结笔记
循环是任何语⾔的⼀个必备要素.同样地,for循环就是Python的⼀个重要组成部分.然而还有⼀些内容是初学者常常忽视的.下面是Python for循环学习总结笔记,一起来查漏补缺吧! ...
- Python的循环
循环是一个结构,导致一个程序要重复一定的次数 条件循环也一样,当条件变为假,循环结束 For循环 在python for循环遍历序列,如一个列表或一个字符. for循环语法: ——for iter ...
- python常见的特异点
编码问题 Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错.解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或 ...
- python基础-循环
循环 循环 要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 6 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+10000,直 ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python的循环和选择
一.python的选择结构: python的选择结构有两种选择结构一种是单选择(if...else)另一种则是多选择结构(if ...elif...elif) 下面用代码来实现: 1.if....el ...
- 在oj中Python的循环输入问题解决
在oj中Python的循环输入问题解决 在makefile中定义逗号字符串和空格字符串 在linux服务器上面部署javaweb项目jar包 数据结构与算法之栈(Java与Python实现) 在oj中 ...
随机推荐
- 新一代的json--fetch
fetch( "http://jsontest.bceapp.com/hi", { method:"POST", mode:"core", ...
- 在HTML中用循环语句
<%for(){% > <tr> <td></td> <td></td> </tr> <%}%> 注意 ...
- 解决jmeter乱码
1. 解决响应数据乱码的方法: 在jemter文件下找到bin\jmeter.properties添加下面一句话: sampleresult.default.encoding=UTF-8 ...
- 编译darknet出现libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用
cd /usr/lib/x86_64-linux-gnu sudo ln -s ~/anaconda/lib/libpng16.so.16 libpng16.so.16 sudo ldconfig## ...
- 【IDEA&&Eclipse】1、为何 IntelliJ IDEA 比 Eclipse 更适合于专业java开发者
圣战 有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是Windows还是Linux,Java还是C#:谁更强壮:Chuck Norris还是Van Damme. 其中的一个圣战便是Java I ...
- split根据一个元素分割语句
a = ‘https://www.baidu.com/s?wd=%E7%AE%80%E4%B9%A6&rsv_spt=1&rsv_iqid=0xdfa3666f00083a6f& ...
- 剑指Offer 52. 正则表达式匹配 (字符串)
题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式 ...
- 神州数码OSPF路由汇总配置
实验要求:掌握OSPF路由汇总配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip addres ...
- SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关
开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...
- Python重新安装pip
1). 下载pip安装工具: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 2).执行升级命令: python2.7 get-pip. ...