Python学习—02输入和输出、运算符
看python input的文档,可以看到input()
本质上还是使用 raw_input()
来实现的,只是调用完 raw_input()
之后再调用 eval()
函数,所以,你甚至可以将表达式作为 input()
的参数,并且它会计算表达式的值并返回它。
def input(prompt):
return (eval(raw_input(prompt)))
除非对 input()
有特别需要,否则一般情况下我们都是推荐使用 raw_input()
来与用户交互。
输出
Python两种输出值的方式: 表达式语句和 print()
函数。(第三种方式是使用文件对象的 write()
方法; 标准输出文件可以用 sys.stdout
引用。)
示例:
print "Hello, Python!";
print ("Hello, Python!"); #新版本的Python
输出的 print 函数总结:
- 字符串和数值类型
可以直接输出:
>>> print(1)
1
>>> print("Hello World")
Hello World
2.变量
无论什么类型,数值,布尔,列表,字典…都可以直接输出
>>> x = 12
>>> print(x)
12
>>> s = 'Hello'
>>> print(s)
Hello
>>> L = [1,2,'a']
>>> print(L)
[1, 2, 'a']
>>> t = (1,2,'a')
>>> print(t)
>>> d = {'a':1, 'b':2}
>>> print(d)
{'a': 1, 'b': 2}
3.格式化输出
类似于C中的 printf
>>> s
'Hello'
>>> x = len(s)
>>> print("The length of %s is %d" % (s,x))
The length of Hello is 5
Python中格式化输出的总结:
(1) %
字符:标记转换说明符的开始
(2) 转换标志:-
表示左对齐;表示在转换值之前要加上正负号;""(空白字符)
表示正数之前保留空格;0
表示转换值若位数不够则用0填充。示例:
(3) 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。
# 指定占位符宽度
>>> print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))
Name: Aviad Age: 25 Height: 1.83
(4) 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,则从后面的元组中读取字段宽度或精度。
>>> print ("His height is %f m"%(1.83))
His height is 1.830000 m
>>> print ("His height is %.2f m"%(1.83))
His height is 1.83 m
>>> print ("The String is %.2s"%("abcd"))
The String is ab
# 用*从后面的元组中读取字段宽度或精度,第1个参数是精度
>>> print ("His height is %.*f m"%(2,1.83))
His height is 1.83 m
转换类型 含义
d,i 带符号的十进制整数
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学计数法表示的浮点数(小写)
E 科学计数法表示的浮点数(大写)
f,F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
G 如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
C 单字符(接受整数或者单字符字符串)
r 字符串(使用repr转换任意python对象)
s 字符串(使用str转换任意python对象)
b = 'world'
>>> a+b
'hello world'
查看变量类型
>>> type(a)
<type 'str'>
math开头需要import math
。
str.format() 的基本使用如下:
>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!"
括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。
自定义打印对象函数:
def prn_obj(obj):
print ', '.join(['%s:%s' % item for item in obj.__dict__.items()])
JSON转换
json类里提供
json.dumps(param) #list转json
示例:
>>> import json
>>> json.dumps(['math','english'])
'["math", "english"]'
>>> json.loads('["math", "english"]')
[u'math', u'english']
json主要用在PHP的array对象 和 python的list对象上。
PHP和Python3能将同样的json还原成 各自的object 且 在各自的语言环境下代表的意义是同样的。
但是 PHP和python将object生成json的时候,却不太一样了,PHP生成的json中多了反斜线。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开文件
fo = open("runoob.txt", "r+")
print "文件名为: ", fo.name
line = fo.read(10)
print "读取的字符串: %s" % (line)
# 关闭文件
fo.close()
运算符
Python支持:
- 算数运算符
- 关系运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
除了以上的一些运算符之外,Python还支持成员运算符,身份运算符:
- 成员运算符
- 身份运算符
算术运算符
Python算术运算符没有C语言里的自增(++
)自减(--
)运算符。
关系运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
以下假设变量a为10,变量b为20:
逻辑运算符
Python语言支持逻辑运算符。
在Python中是没有&&
、||
、!
这三个运算符的,取而代之的是英文and
、or
、not
。
以下假设变量 a 为 10, b为 20:
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔”与” - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20 |
or | x or y | 布尔”或” - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔”非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13,二进制格式如下:
以下假设变量 a 为 1, b为 20,c为[1, 2, 3, 4, 5 ]
:
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | (a in c) , 返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | (b not in c) , 返回 True。 |
身份运算符
身份运算符用于比较两个对象的存储单元。
运算符优先级
运算符 | 描述 |
---|---|
指数 (最高优先级) | |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
/ % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
位运算符 | |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += = = | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |