Python学习—02输入和输出、运算符

命令行输入

  1. x = input("Please input x:")
  2. y = raw_input("Please input x:")

使用inputraw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的。raw_input() 将所有输入作为字符串看待,返回字符串类型;而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int, float),input() 可接受合法的 python 表达式。

看python input的文档,可以看到input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参数,并且它会计算表达式的值并返回它。

  1. def input(prompt):
  2. return (eval(raw_input(prompt)))

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

输出

Python两种输出值的方式: 表达式语句和 print() 函数。(第三种方式是使用文件对象的 write() 方法; 标准输出文件可以用 sys.stdout 引用。)

print

示例:

  1. print "Hello, Python!";
  2. print ("Hello, Python!"); #新版本的Python

输出的 print 函数总结:

  1. 字符串和数值类型
    可以直接输出:
  1. >>> print(1)
  2. 1
  3. >>> print("Hello World")
  4. Hello World

2.变量
无论什么类型,数值,布尔,列表,字典…都可以直接输出

  1. >>> x = 12
  2. >>> print(x)
  3. 12
  4. >>> s = 'Hello'
  5. >>> print(s)
  6. Hello
  7. >>> L = [1,2,'a']
  8. >>> print(L)
  9. [1, 2, 'a']
  10. >>> t = (1,2,'a')
  11. >>> print(t)
  12. (1, 2, 'a')
  13. >>> d = {'a':1, 'b':2}
  14. >>> print(d)
  15. {'a': 1, 'b': 2}

3.格式化输出
类似于C中的 printf

  1. >>> s
  2. 'Hello'
  3. >>> x = len(s)
  4. >>> print("The length of %s is %d" % (s,x))
  5. The length of Hello is 5

Python中格式化输出的总结:
(1) %字符:标记转换说明符的开始

(2) 转换标志:-表示左对齐;+表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充。示例:

  1. # 指定占位符宽度(左对齐)
  2. >>> print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))
  3. Name:Aviad Age:25 Height:1.83
  4. # 指定占位符(若位数不够则用0填充)
  5. >>> print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))
  6. Name:Aviad Age:00000025 Height:00001.83

(3) 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

  1. # 指定占位符宽度
  2. >>> print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))
  3. Name: Aviad Age: 25 Height: 1.83

(4) 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,则从后面的元组中读取字段宽度或精度。

  1. >>> print ("His height is %f m"%(1.83))
  2. His height is 1.830000 m
  3. >>> print ("His height is %.2f m"%(1.83))
  4. His height is 1.83 m
  5. >>> print ("The String is %.2s"%("abcd"))
  6. The String is ab
  7. # 用*从后面的元组中读取字段宽度或精度,第1个参数是精度
  8. >>> print ("His height is %.*f m"%(2,1.83))
  9. His height is 1.83 m

(5) 字符串格式化转换类型

  1. 转换类型 含义
  2. d,i 带符号的十进制整数
  3. o 不带符号的八进制
  4. u 不带符号的十进制
  5. x 不带符号的十六进制(小写)
  6. X 不带符号的十六进制(大写)
  7. e 科学计数法表示的浮点数(小写)
  8. E 科学计数法表示的浮点数(大写)
  9. f,F 十进制浮点数
  10. g 如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
  11. G 如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
  12. C 单字符(接受整数或者单字符字符串)
  13. r 字符串(使用repr转换任意python对象)
  14. s 字符串(使用str转换任意python对象)

拼接字符串

  1. a = 'hello '
  2. b = 'world'
  3. >>> a+b
  4. 'hello world'

查看变量类型

  1. >>> type(a)
  2. <type 'str'>

部分函数

math开头需要import math

  1. str(object) 把值转换为字符串
  2. repr(object) 返回值的字符串标示形式
  3. abs(number) 返回数字的绝对值
  4. cmath.sqrt(number) 返回平方根,也可以应用于负数
  5. float(object) 把字符串和数字转换为浮点数
  6. help() 提供交互式帮助
  7. input(prompt) 获取用户输入
  8. int(object) 把字符串和数字转换为整数
  9. math.ceil(number) 返回数的上入整数,返回值的类型为浮点数
  10. math.floor(number) 返回数的下舍整数,返回值的类型为浮点数
  11. math.sqrt(number) 返回平方根不适用于负数
  12. pow(x,y[.z]) 返回Xy次幂(有z则对z取模)
  13. round(number[.ndigits]) 根据给定的精度对数字进行四舍五入

str.format() 的基本使用如下:

  1. >>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
  2. We are the knights who say "Ni!"

括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。

自定义打印对象函数:

  1. def prn_obj(obj):
  2. print ', '.join(['%s:%s' % item for item in obj.__dict__.items()])

JSON转换

json类里提供

  1. json.dumps(param) #list转json
  2. json.loads(param) #json转list

示例:

  1. >>> import json
  2. >>> json.dumps(['math','english'])
  3. '["math", "english"]'
  4. >>> json.loads('["math", "english"]')
  5. [u'math', u'english']

json主要用在PHP的array对象 和 python的list对象上。

PHP和Python3能将同样的json还原成 各自的object 且 在各自的语言环境下代表的意义是同样的。

但是 PHP和python将object生成json的时候,却不太一样了,PHP生成的json中多了反斜线。

打开文件

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. # 打开文件
  4. fo = open("runoob.txt", "r+")
  5. print "文件名为: ", fo.name
  6. line = fo.read(10)
  7. print "读取的字符串: %s" % (line)
  8. # 关闭文件
  9. fo.close()

运算符

Python支持:

  • 算数运算符
  • 关系运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符

除了以上的一些运算符之外,Python还支持成员运算符,身份运算符:

  • 成员运算符
  • 身份运算符

算术运算符

以下假设变量a为10,变量b为20:

运算符描述实例
+加 - 两个对象相加a + b 输出结果 30
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10
乘 - 两个数相乘或是返回一个被重复若干次的字符串a b 输出结果 200
/除 - x除以yb / a 输出结果 2
%取模 - 返回除法的余数b % a 输出结果 0
幂 - 返回x的y次幂ab 为10的20次方, 输出结果 100000000000000000000
//取整除 - 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

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:

运算符描述实例
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
=乘法赋值运算符c = a 等效于 c = c a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
=幂赋值运算符c = a 等效于 c = c * a
//=取整除赋值运算符c //= a 等效于 c = c // a

逻辑运算符

Python语言支持逻辑运算符。

在Python中是没有&&||!这三个运算符的,取而代之的是英文andornot

以下假设变量 a 为 10, b为 20:

运算符逻辑表达式描述实例
andx and y布尔”与” - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20
orx or y布尔”或” - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔”非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13,二进制格式如下:

  1. a = 0011 1100
  2. b = 0000 1101
  3. -----------------
  4. a&b = 0000 1100
  5. a|b = 0011 1101
  6. a^b = 0011 0001
  7. ~a = 1100 0011
运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

成员运算符

以下假设变量 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。

身份运算符

身份运算符用于比较两个对象的存储单元。

运算符描述实例
isis是判断两个标识符是不是引用自一个对象x is y, 如果 id(x) 等于 id(y) , is 返回结果 1
is notis not是判断两个标识符是不是引用自不同对象x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1

运算符优先级

运算符描述
指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
/ % //乘,除,取模和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^ |位运算符
<= < > >=比较运算符
<> == !=等于运算符
= %= /= //= -= += = =赋值运算符
is is not身份运算符
in not in成员运算符
not or and逻辑运算符

参考:
1、Python 3 语法小记(一)入门 (print 函数用法总结) - Just Coding! - 博客频道 - CSDN.NET
http://blog.csdn.net/jcjc918/article/details/9354815
2、Python格式化输出 - MindProbe - 博客园
http://www.cnblogs.com/plwang1990/p/3757549.html
3、Python3 的json 和 PHP的json - 宁静的天空 - 博客园
http://www.cnblogs.com/ribavnu/p/4850413.html

作者: 飞鸿影
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
出处:https://www.cnblogs.com/52fhy/p/6235133.html