2021-06-16 Pyhton基础知识——print函数

一、print函数的基本概述:

  • 这个函数的作用就是用作打印输出
  • 其语法结构为 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
  • objects参数是对象,多个对象时记得要用 ' ,'
  • sep参数设置分隔符,默认为空格
  • end参数设置以什么结尾,默认为' \n ' 换行
  • file参数设置写入的文件对象是谁
  • flush参数,file决定是否缓存输出,如果flush=ture,则将会立即刷新

二、对print函数的演示:

#示例1
print('My','name','is liming','I','come','from','China')         #未设置分隔符,默认空格
print('My','name','is liming','I','come','from','China',sep='.') #设置了分隔符为'.'
print('My','name','is liming','I','come','from','China',sep='---')#设置了分隔符为'---'

结果:
My name is liming I come from China
My.name.is liming.I.come.from.China
My---name---is liming---I---come---from---China

#示例2
print('I am a good boy',end='-——-打印结束\n')    #设置打印结尾'-——-打印结束',然后再换行
print('I am a good boy',end='123\n')            #设置打印结尾带上'123',然后再换行
number = 0,1,2,3,4,5,6,7,8,9                    #这里利用for循环遍历number,每次打印一个数字
for i in number:                                #打印的时候设置结尾'--'
    print(i,end='--')

结果:
I am a good boy-——-打印结束
I am a good boy123
0--1--2--3--4--5--6--7--8--9--
#示例3
with open(r'C:\Users\autumn\pypypy\123.txt', 'w') as pypypy:
    print('I am a good boy',file=pypypy)

三、print函数的参数格式化——利用%

符号具体描述
%c格式化字符及其ACILL码(输出单个字符)
%s格式化字符串(输出字符串)
%d格式化整数(以十进制输出带符号的整数)
%u格式化无符号整型(以十进制输出不带符号的整数)
%o格式化无符号八进制数(以八进制输出不带符号的整数)
%x格式化无符号十六进制数(以十六进制输出不带符号的整数)
%X格式化无符号十六进制数(以十六进制输出不带符号的整数)(大写)
%f格式化浮点数字,可指定小数点后的精度(输出浮点数,可设置小数位)
%e用科学计数法格式化浮点数(利用科学计数法输出浮点数)
%E作用跟%e一样,只是e变成了E
%g%f和%e的简写(根据值的大小采用%e或%f来输出)
%G%f 和 %E 的简写(根据值的大小采用%E或%f来输出)
%p用十六进制数格式化变量的地址(用十六进制输出对象的内存地址)
#示例1
a=97
b=65
print('a=%c'%(a))    #将ACILL码转为单个字符输出
print('b=%c'%(b))    #将ACILL码转为单个字符输出

结果:
a=a
b=A

#示例2
a='“你真的好好看啊!”'
print('有一句话,我想同你讲好久了:%s'%(a))    #输出字符串

结果:
有一句话,我想同你讲好久了:“你真的好好看啊!”

#示例3
a=123.456
b=-123.456
print('第一个输出%d,第二个输出%d'%(a,b))    #输出两个十进制带符号的整数

结果:
第一个输出123,第二个输出-123


#示例4
a=+123.456
b=-123.45654
print('第一个输出%u,第二个输出%u'%(a,b))    #输出两个十进制不带符号的整数

结果:
第一个输出123,第二个输出-123  #这里的%u与%d的作用一样,目前看来是因为python自身的原因


#示例5
a=+123
b=5-54
print('第一个输出%o,第二个输出%o'%(a,b))    #输出两个八进制不带符号的整数

结果:
第一个输出173,第二个输出-61 #这里同样会发现还是带符号,这个问题仍然待解决


#示例6
a=+123
b=-123
print('第一个输出%x,第二个输出%x'%(a,b))    #输出两个十六进制不带符号的整数

结果:
第一个输出7b,第二个输出-7b    #这里同样会发现还是带符号,这个问题仍然待解决


#示例7
a=+123
b=-123
print('第一个输出%X,第二个输出%X'%(a,b))    #输出两个十六进制不带符号的整数(大写)

结果:
第一个输出7B,第二个输出-7B    #这里同样会发现还是带符号,这个问题仍然待解决


#示例8
a=123.456000
b=123.456000
print('第一个直接输出:%f,第二个输出并保留三位小数:%.3f'%(a,b)) #输出两个浮点数

结果:
第一个直接输出:123.456000,第二个输出并保留三位小数:123.456

#示例9
a=123.456
b=123456.0
print('第一个直接输出:%e,第二个输出并设置宽度为10:%10e'%(a,b)) #科学计数法输出

结果:第一个直接输出:1.234560e+02,第二个输出并设置宽度为10:1.234560e+05


#示例10
a=123.456
b=123456.0
print('第一个直接输出:%E,第二个输出并设置宽度为10:%10E'%(a,b))


#示例11
关于%p输出以十六进制输出对象地址的问题还未解决

四、print函数的参数格式化——利用%的辅助指令

符号功能
*定义宽度或者小数点精度
-用于左对齐
+在正数前面显示加号( + )
<sp>在正数前面显示空格 (目前,这个实现仍有问题)
0显示的数字前面填充'0'而不是默认的空格
% %% 输出一个单一的'%'
(var)映射变量(字典参数)(目前,这个实现仍有问题)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
#在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')  (这个方法目前仍未实现成功,待解决)
#示例1
a=+123.456
b=-123.45654
print('第一个输出%*d,第二个输出%d'%(10,a,b))    #这里设置了10个宽度

结果:
第一个输出       123,第二个输出-123


#示例2
a=123.45654
b=123.45654
print('第一个输出%.*f,第二个输出%f'%(2,a,b))    #这里设置了第一个输出精度为两位小数

#示例3
a=123.456
b=123.45654
print('第一个输出%+d,第二个输出%d'%(a,b))    #这里设置了第一个整数前带'+'号

#示例4
a=  123.45654
b=  123.45654
print('第一个输出%010.3f,第二个输出%f'%(a,b))#这里设置了第一个输出宽度为10,其中的空格用0填充

结果:
第一个输出000123.457,第二个输出123.456540


#示例5
x=10
y=10
print('%d %% %d'%(x,y))       #%%的结果是输出一个 %

结果:
10 % 10


#示例6
a=123.456789
print('输出结果%20.3f'%(a))        #这里设置最小总宽度为20,保留3位小数
print('输出结果%020.3f'%(a))       #这里设置最小总宽度为20,空格用0替代,保留三位小数

结果:
输出结果             123.457
输出结果0000000000000123.457

#未完待续

Nguyen-Widrow算法是一种用于初始化神经网络权重的方法,旨在提高网络的收敛速度和性能。它通过调整权重的初始值来改善网络的学习过程。 以下是使用Python实现Nguyen-Widrow算法的示例代码: ```python import numpy as np def nguyen_widrow_init(weights, input_size, output_size): # 计算beta值 beta = 0.7 * pow(output_size, 1.0 / input_size) # 对每一层的权重进行初始化 for i in range(len(weights)): if len(weights[i].shape) > 1: # 如果是矩阵权重(全连接层) fan_in, fan_out = weights[i].shape scale = beta / np.sqrt(fan_in) weights[i] = np.random.uniform(low=-scale, high=scale, size=(fan_in, fan_out)) else: # 如果是向量权重(偏置项) fan_in = weights[i].shape[0] scale = beta / np.sqrt(fan_in) weights[i] = np.random.uniform(low=-scale, high=scale, size=fan_in) # 使用示例 input_size = 10 output_size = 5 # 初始化权重 weights = [np.zeros((input_size, output_size)), np.zeros(output_size)] # 使用Nguyen-Widrow算法进行初始化 nguyen_widrow_init(weights, input_size, output_size) # 打印初始化后的权重 print(weights) ``` 在上述示例中,我们定义了一个`nguyen_widrow_init`函数,该函数接受权重列表、输入大小和输出大小作为输入,并根据Nguyen-Widrow算法对权重进行初始化。具体而言,对于每一层的权重,我们根据公式计算出适当的缩放因子`scale`,然后使用均匀分布从`-scale`到`scale`之间的随机值来初始化权重。 最后,我们使用示例中的输入大小和输出大小初始化了一个权重列表,并调用`nguyen_widrow_init`函数对权重进行初始化。然后,我们打印出初始化后的权重。 请注意,这只是Nguyen-Widrow算法的一种实现方式,实际应用中可能会有一些细微的差异和调整。此外,这个示例只展示了如何对权重进行初始化,你需要根据你的具体神经网络架构和任务需求来调整和适应Nguyen-Widrow算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值