python课整理 2021.09.01

2021.9.1

今日讲解了Python的print和input用法,以及如何使用文档。

今日重点是地址问题,对于python和c的地址引用问题

print

  1. 接下来讲解文档帮助·:有两种方式
print?或help(print)

在这里插入图片描述

Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
# 函数的参数问题,value,...表示可变参数,sep表示间隔是空格,end表示默认换行,file默认是直接输出到屏幕上,也可以修改保存到文件上,flush默认是false,是关闭才加载到内存当中,如果为true,表示立即刷新,而不是等待缓存区满了才刷新。
Prints the values to a stream, or to sys.stdout by default. #表示可以输入多个参数到一个流中。
Optional keyword arguments:#可选参数
file:  a file-like object (stream); defaults to the current sys.stdout. 
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
Type:      builtin_function_or_method #表示这是python官方内置函数
  1. 查找类型

每个数值或变量都有它自己的类型

a = 123
b = 12.3
c = "123"
d = [1,2,3]
e = {1,2,3,4}
f = {"key1":"123","key2":"12"}
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
print(type(f))

输出结果:

<class 'int'>  #表示整型
<class 'float'>  #表示浮点
<class 'str'>   #表示字符串
<class 'list'>  #表示列表(类似java的数组,但python中并没有数组这个概念)
<class 'set'>  #表示集合
<class 'dict'> #表示字典

注意:对于列表‘集合和字典来说,他们可以保存不一样的类型,这点跟java不一样,如:

d = [1,"123",{1,2,3}]#并不会报错,对于java来说则不行
  1. 输出格式
print("第一个参数:%d,第二个参数是:%s" %(10,"小白")) #大致上是这样

%d和%s大致上跟c中的占位符类似

  1. 参数的使用
  • sep
print(1,2,3,4) #默认间隔为空格
print(1,2,3,4,sep = '*') #修改为*

输出结果

1 2 3 4
1*2*3*4
  • end
print(1,2,3) # 默认为换行
print(1,2,3,end='结尾') #修改换行为字符串
print(4,5,6)

输出结果:

1 2 3
1 2 3结尾4 5 6

对于输出大致上就这么多(下课后就记得这么多了。。。)

**难点:**对于每一个变量的赋值,都要注意:python每一次都是将变量的定义和赋值是一起操作的,也就是说,你两次同一个变量的赋值,其实地址已经发生改变了。

a = 12
print(id(a))
a = 13
print(id(a))

输出结果:

94612661048288
94612661048320
#两个地址不一样,这跟c就不一样了(java待验证),这其实是python机制造成的,每一次赋值都是重新定义了,在赋值完12后,地址数值已经保存在那了,然后重新找个地址赋值过去。

在这里插入图片描述

对于单字节来说,每次同样的赋值,结果一样。

a = 0
print(id(a))
a = 0
print(id(a))

输出结果:

94435260273248
94435260273248

有意思的是,256的地址还是相等的,按照单字节来说,应当是0~255(可能是机制问题)

a = 256
print(id(a))
a = 256
print(id(a))

输出结果(地址依旧相同)

94435260281440
94435260281440

到了257地址就不一样了。

a = 257
print(id(a))
a = 257
print(id(a))

输出结果

140453486287504
140453486286448

对于负数来说就更神奇了。它相等的范围只有(-1,-5)。至于为什么,还不清楚

a = -1
print(id(a))
a = -1
print(id(a))

输出结果:

94435260273216
94435260273216
a = -5
print(id(a))
a = -5
print(id(a))

输出结果:

94435260273088
94435260273088
a = -6
print(id(a))
a = -6
print(id(a))

输出结果:

140453486288112
140453486288144

对于浮点数稍微测试了一下,发现对于不论什么浮点数,地址不一样,哪怕是1.0这些

综合测试:对于-5到256的赋值(注意一定要是整数),地址是一样的,不会改变,至于其他的,则会重新开辟一个空间,然后赋值。

Input输入

知识点并不多,主要知道在使用input后,要记得转换类型

首先看下文档

input?

输出·结果:

Signature: input(prompt='')
Docstring:Forward raw_input to frontendsRaises
------StdinNotImplentedError if active frontend doesn't support stdin. #讲解报错问题
File:/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel/kernelbase.
pyType:      method

文档提供参数很少,说明没说明太大限制。

a = input("输入的结果是:")

输出结果:

输入的结果是: 123

注意:

若使用以下,就会报错,因为没有类型转换

a = input()
c = a  + 120

输出结果:

 10 #这个是你输入的结果
 ---------------------------------------------------------------------------TypeError Traceback (most recent call last) #报错说类型不一致,
 <ipython-input-26-3a077301b032> in <module>      
 1 a = input()
 ----> 2 c = a  + 120
 TypeError: can only concatenate str (not "int") to str

因为在输入的时候,python是自动设置为字符串类型,因此我们要转换,还有python里面是没有char类型

a = int(input())
c = a + 120
print(c)

输出结果:

10 #这个是我输入的值
130 #输出结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值