python学习入门4输出语句与赋值语句 2018.8.17

参照:python程序设计第三版
python programming:an introduction to computer science

第二章:编写简单程序

首先理解什么是“”元语言“”
元语言:计算机科学家开发的复杂的符号表示法(类似于模板)
我们依靠这种模板符号来表示语句的语法

print语句

print(<expr>,<expr>,...,sep=' ',end='\n',file=sys.stdout)

expr == expression 表达式
sep == separation 间隔符
end 文本结束标记符
\n 换行符
file 输出位置
sys == system
stdout == standard output 标准输出

可以显式地覆盖默认值来改变参数

>>>print (1,1,11 1 1
>>>print(1,1,1,sep = '+',end = '.')
1+1+1.

例如可以让print不打印到控制台,而是文本文件

filr=
但不可以这么用,要先打开文件(关于这个的机制以后讲,简单说就是要先打开文件将其内容读取到RAM,然后对RAM中的内容操作)

这里写图片描述
这样就行

要知道:print()函数实质调用了sys.stdout.write()并在结束时附了一个'\n'换行符

想要使用print()输出到文件中,还可以对sys.stdout赋值为一个文件对象

f = open ('test.txt','w')
sys.stdout = f
print ('test')#会输出到test.txt

但是要明确的是,我们有理由去了解这些用法来拓宽视野,至于是否应该在程序中使用,我目前认为是多数时候都是不应该的(目前准大一0基础)

当不带任何参数时:
print()将产生空行
这里写图片描述

另外注意,在编程语言中,打印是一种跟随光标的行为。
光标在哪,就在哪开始打印

print('1 + 1 =',end ='')
print(' 2')
#将在一行输出
1 + 1 = 2

赋值语句

1.基本赋值语句:<variable> = <expr>
variable是标识符,expr是表达式

赋值语句的语义是:右侧的表达式被求值,然后产生的值与左侧命名的变量相关联
(关于求值,见于另一篇博客:标识符与表达式)

!!!注意,在python中 变量是于对象相关联的,而不是与内存位置相关联的。
值可以存放在内存中的任何位置,变量只是用于引用它们。
这有别于“”变量盒子的模型“”,当变量更改时,旧值被删除,新值被写入
内存地址属于变量(在声明中分配)这是C的特点
在python中一切皆对象,变量只负责引用,所以当变量更改时,变量指向新值,旧值会在程序空闲时被垃圾回收

2.赋值输入

<variable> = input(<ptompt>)

prompt == 提示词 接受一个字符串表达式
input()返回字符串
要得到数字可用eval(),该函数只接受字符串输入

<variable> = eval(input(<ptompt>))

eval == evaluate 求值
其作用类似于去掉引号

eval'ss'#这会显示ss未定义,因为去掉了引号
eval'11'#返回数字11

但是注意贸然使用eval()是有很大风险的:
eval
我在input输入中键入print(‘ss’),将会控制程序输出ss,这称为代码注入攻击

为什么直接用eval(‘print(‘ss’)’)不行呢,我也想知道

同时赋值

<var1>,<var2>,... = <expr1>,<expr2>,...

因为是同时赋值,所以不用管该语句执行过程中各变量值的变化,只需取执行前一刻的变量值赋值即可
好处是可以轻而易举地完成变量间值的交换
而其他语言将必须引入第三变量

x,y = y,x
#等效于
z = x
x = y
y = z
这是python的优雅

你可以用类似代码在一次输入中对两个变量同时赋值:

score1,score2 = eval(input('Enter the scores separated by a comma: ')

赋字符串值是可以这样:

score1,score2 = input('Enter the scores separated by a comma: ').split(',')

对eval()的替换方法是直接指明要转换到的数据类型,而不是直接去除引号

猜你喜欢

转载自blog.csdn.net/qq_42987633/article/details/81778046
今日推荐