新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
pre
创新互联主营宜城网站建设的网络公司,主营网站建设方案,重庆APP开发公司,宜城h5微信小程序定制开发搭建,宜城网站营销推广欢迎宜城等地区企业咨询
da =[
['a',30,0.45],
['b',31,0.43548],
['c',32, 0.43],
['d',33, 0.42],
['e',34, 0.41],
['f',35, 0.40],
['g',36, 0.39],
['h',37, 0.38]
]
li = [] # 存放符合条件的数
lp = [] # 正参与循环的数
total = 0.0 # 求和
no = 0 # 总循环次数
i,ln = 0,len(da)
while True:
if i ln: # 加入循环
lp +=[da[i]]
print('{}次后{}参入循环!'.format(no,da[i][0]))
i += 1
while lp:
no += 1
for j in range(len(lp)-1,-1,-1):
total += lp[j][2]
lp[j][1] -= 1
if lp [j][1] == 0:
print('{}次后,{}循环结束!'.format(no,lp[j][0]))
del lp[j]
if total = 10:
li += [[no,round(total-10,5)]]
total = 0
break
if i==ln and lp == []:
print('最后值为:{}'.format(total))
break
print('\n符合条件的值有{}个,他们如下:\n'.format(len(li)),'*'*40)
for i in range(len(li)):
print(li[i][0],'次循环后,符合条件,其和为:',10+li[i][1],' ,减10后为:',li[i][1])
/pre
如果非要自己定义一个函数用循环求阶乘,可以这样写(缩进格式见下图):
def jc(n):
i,fact=1,1
while i=n:
fact*=i
i+=1
return fact
print(jc(6))
运行截图:
稍微比较好一点的方法是用functools模块的reduce函数,像这样:
from functools import reduce
n=6
fact=reduce(lambda x,y:x*y,range(1,n+1))
print(fact)
更好一点的办法是直接使用math模块的求阶乘的函数factorial,像这样写:
import math
print(math.factorial(6))
for ... in ...
// for ... in 字符串
for i in 'abc':
print(i)
'''
a
b
c
'''
// for ... in 数组
for i in ['a', 'b', 'c']:
print(i)
'''
a
b
c
'''
// for ... in 元组
for i in ('a', 'b', 'c'):
print(i)
'''
a
b
c
'''
// for ... in 字典(得到的是字典的key)
for k in {'学号':30,'姓名':'小明'}:
print(k)
'''
姓名
学号
'''
// for ... in 字典.items()(得到的是字典的key, value)
for k, v in {'学号':30,'姓名':'小明'}.items():
print(k, v)
'''
姓名 小明
学号 30
'''
for ... in range(...)
// for ... in range(num)
for i in range(3):
print(i)
'''
1
2
'''
// for ... in range(num1, num2)
for i in range(1, 3):
print(i)
'''
1
2
'''
// for ... in range(num1, num2, num3)
for i in range(3, 1, -1):
print(i)
'''
3
2
'''
for i in range(1, 5, 2):
print(i)
'''
1
3
'''
倒叙
for i in reversed([1,2,3,4]):
print(i)
’‘’
4
3
2
1
‘’‘
又想得到遍历次数,又想得到数组值
for i,e in enumerate(array):
for i,e in enumerate(['21dw', 55, 22, 'rw']):
print(i, e)
'''
0 21dw
1 55
2 22
3 rw
'''
列表生成式
[...for ... in array]]
print([x * x for x in [2, 34, 324, 43]])
'''
[4, 1156, 104976, 1849]
'''
//相当于
list = []
for x in [2, 34, 324, 43]:
list.append(x * x)
print(list)
#脚本里面直接这样写就好了import randomdef R(): print (random.randint(1,1000))for i in range(1,10): R()
可以用假设法啊。这是计算机擅长的方法,用一个循环先假设循环节为1,然后依次假设2,3,4,5,6,7,8,9
不用再多了。再多也看不过来。这样就可以轻松算出来了。
1234567891011import sysx=0.12312312313tmps = "%s"%xp = tmps.find('.')if p0: sys.exit()tmps = tmps[p+1:]for i in xrange(1,9): if tmps[:i]== tmps[i:i*2] and tmps[i:i*2]== tmps[i*2:i*3] : print 'result is %d'%i sys.exit()print 'not found'
上面是一个简单的例子。
编写循环的技巧,for循环包含了常见的计数器式循环。由于通常for循环比while循环更容易写,也执行得更快,所以for循环一般是你遍历序列或其他可迭代对象时的首选。事实上,作为一条通用法则,你应该克制在Python中使用计数方式的诱惑——Python提供的迭代工具,能帮你把像C这样低级语言中循环集合体的工作自动化。不过,有些情况下你还是需要以更为特定的方式进行迭代。例如,如果你需要在列表中每隔一个元素或每隔两个元素进行访问,或是要同时修改列表呢?如果在同一个for循环内,并行遍历一个以上的序列呢?如果你也需要进行索引呢?
你总是可以用while循环和手动索引运算来编写这些独特的循环,但是python提供了一套内置函数,可以帮你在for循环内定制迭代:·内置函数range (Python 0.X及之后版本可用)返回一系列连续增加的整数,可作为for中的索引。内置函数zip (Python 2.0及之后版本可用)返回一系列并行元素的元组,可用于在for中内遍历多个序列。内置函数enumerate (Python 2.3及之后版本可用)同时生成可迭代对象中元素的值和索引,因而我们不必再手动计数。内置函数map (Python 1.0及之后版本可用)在Python 2.X中与zip有着相似的效果,但是在3.X中 map 的这一角色被移除了。因为for循环可能会比基于while的计数器循环运行得更快,所以借助这些工具并尽可能地使用for循环,会让你受益匪浅。让我们在常见的使用场景下,依次看一看这些内置函数吧。我们将会看到,它们的用法在Python 2.X和3.X中稍有不同,同时它们中的一些要比其他的更加有效。