先介绍一哈range()函数
我们都知道在python中有这样一个内置函数:range() -使用range()函数可创建一个整数列表,一般用在for循环中。
函数语法
range(start, stop,[step])
参数说明
_start: 计数从start开始。默认是从0开始。例如:range(5)就等价于range(0,5);
_stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;
_step: 步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1);
实例
>>> x = [i for i in range(5)]
>>> x
[0,1,2,3,4]
>>> x = [i for i in range(0,5)]
>>> x
[0,1,2,3,4]
>>> x = [i for i in range(0,5,1)]
>>> x
[0,1,2,3,4]
下面是range在for中的应用,循环出wdnmd的每个字母:
>>> x = 'wdnmd'
>>> for i in range(len(x)):
print(x[i])
w
d
n
m
d
接着简单的编写一下支持浮点数的f_range()函数
由于range()函数的数字类型不支持浮点数的类型,因此就来编写一个简单的f_range()函数来实现支持浮点数输出的功能:
f_range()函数的语法和参数都按照python中内置函数range()的规定来写
即:f_range(start, stop,[step])
接着在pycharm或者IDLE中开始编写f_range()函数,(注:这里为了方便阅读我直接把思路一注释的形式写进代码里了。)
import math #导入math模块以便使用做数学运算的函数
def f_range(start,stop,step): #定义f_range函数以及其语法形式
'''
以字符串的形式遍历start stop step三个变量的小数部分的位数
'''
start_digit = len(str(start))-1-str(start).index(".")
stop_digit = len(str(stop))-1-str(stop).index(".")
step_digit = len(str(step))-1-str(step).index(".")
'''
取三个变量中小数位数最大的那个为基准赋值给digit(使接下来运算方便转化为整数以及最终输出
的小数值的小数位数都为最大的那个位数来达到统一)
'''
digit = max(start_digit,stop_digit,step_digit)
'''
返回值就利用range函数的用法,但是在计算时,range函数不能直接
计算小数,所以我们就先把这个数扩大10的其小数位数的次方倍(即
直接化为整数),在由range函数循环完毕之后再除以10的其小数位
数的次方倍即可转化为小数
'''
return[(start*10**digit+i*step*10**digit)/10**digit for i in range(int((stop-start+step-step/100)/step))]
c= f_range(1.1 ,10.2,0.3) #定义一个初始值
print (c) #输出c此时小数集
运行结果如下:
[1.1, 1.4, 1.7, 2.0, 2.3, 2.6, 2.9, 3.2, 3.5, 3.8, 4.1, 4.4, 4.7, 5.0, 5.3, 5.6, 5.9, 6.2, 6.5, 6.8, 7.1, 7.4, 7.7, 8.0, 8.3, 8.6, 8.9, 9.2, 9.5, 9.8, 10.1]
小结
有的时候,硬的不行,就来软的。(:з」∠)