十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
4.7.1. 默认参数值
创新互联建站网络公司拥有十余年的成都网站开发建设经验,上千客户的共同信赖。提供成都网站制作、成都网站建设、网站开发、网站定制、买友情链接、建网站、网站搭建、响应式网站、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务
最常用的一种形式是为一个或多个参数指定默认值。这会创建一个可以使用比定义是允许的参数更少的参数调用的函数,例如:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = input(prompt)
if ok in ('y', 'ye', 'yes'):
return True
if ok in ('n', 'no', 'nop', 'nope'):
return False
retries = retries - 1
if retries 0:
raise OSError('uncooperative user')
print(complaint)
这个函数可以通过几种不同的方式调用:
只给出必要的参数:
ask_ok('Do you really want to quit?')
给出一个可选的参数:
ask_ok('OK to overwrite the file?', 2)
或者给出所有的参数:
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
这个例子还介绍了 in 关键字。它测定序列中是否包含某个确定的值。
默认值在函数 定义 作用域被解析,如下所示:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
将会输出 5。
重要警告: 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
这将输出:
[1]
[1, 2]
[1, 2, 3]
如果你不想让默认值在后续调用中累积,你可以像下面一样定义函数:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
楼主你好!
逻辑比较简单,直接上代码:
# -*- coding: utf-8 -*-
def sum_tuple():
'''固定元组求和'''
target_tuple = (0, 5, 10, 15, 20)
print u'固定元组为', str(target_tuple), u'求和结果', sum(target_tuple)
def while_input():
'''while输入求和'''
target_list = []
while len(target_list) 5:
print u'请输入第%s个数字:'%(len(target_list)+1)
try:
current_num = int(input())
target_list.append(current_num)
except:
print u'请输入正确的数字'
print u'您输入的值为', str(target_list), u'求和结果', sum(target_list)
def for_input():
'''for输入求和'''
target_list = []
for i in xrange(5):
print u'请输入第%s个数字:'%(i+1)
try:
current_num = int(input())
target_list.append(current_num)
except:
'''注意,在for循环中输入错误的数字,
会导致求和列表长度减少'''
print u'请输入正确的数字'
print u'您输入的值为', str(target_list), u'求和结果', sum(target_list)
if __name__ == '__main__':
'''在这里填写你想要测试的方法'''
for_input()
如果你两列数据中间是用tab键来分割,两个数据都是str类型的
with open("bowl_profile_1") as f:
data = f.readlines() # 读入数据
out = ["%d\t%s"%(0,data[i].split('\t')[-1]) for i in range(len(data))] # 修改数据
with oepn(path) as f: # 写入数据,path是新文件的路径
for i in out:
f.write(i)
很简单,不用那么蠢的代码。
如果你不需要最终产生的随机数是整数的话,只需要随机产生10个随机数,然后计算它们的合是多少,然后算下这个合和60之间的比例,把所有的随机数乘以一个比例就可以了。给你两个方法参考,都是可以的。见方法1,方法2的代码。
如果你需要最终产生整数的话,那就随机产生9个随机数,在算比例的时候变一下分母分子,然后最后用原list除以比例的时候用整除就可以了。这样9个数全是整数,然后算一下这九个数和60的差值,把差值补充进去做为第十个数就可以了。见方法1'和方法2’。
import numpy as np
#方法1:产生0-1的10个随机浮点数,然后乘以比例达到最终合为60
x0=np.random.rand(10)
ratio=60/sum(x0)
x1=x0*ratio
#方法2:产生10个0-60之间的10个随机整数,然后乘以比例达到最终合为60
y0=np.random.randint(60,size=10)
ratio=60/sum(y0)
y1=y0*ratio
#方法1':产生0-1的9个随机浮点数,然后除以比例达到9个数为整数,最后补充一个60和这个
#list的和的差值,就可以了。
x0=np.random.rand(9)
ratio=sum(x0)/60
x1=x0//ratio
x1=x1.tolist()
x1.append(60-sum(x1))
#方法2':产生10个0-60之间的随机整数,然后除以比例达到9个数为整数,最后补充一个60和这个
#list的和的差值,就可以了。
y0=np.random.randint(60,size=9)
ratio=sum(y0)/60
y1=y0//ratio
y1=y1.tolist()
y1.append(60-sum(y1))
你可以使用Python中的 `int()` 函数,它将给定的参数强制转换为整数。比如 `int(x)`,其中 `x` 是可以是浮点数、字符串或布尔值的变量。