数据类型

一、Python支持的数据类型

1.变量

变量是内存中的一块区域

变量的命名:由字母、数字、下划线组成并且开头不能时数字

python中地址变量与c语言刚好相反,一条数据包含多个标签:

>>> a=1
>>> b=1
>>> id(a)
34909288
>>> id(b)
34909288

2.整型

注:type()可以查看数据类型

>>> num1=123
>>> type(num1)
<type '
int'>
3.长整型

#强制定义为长整型:num3=999L

>>> num2=9999999999999999999
>>> type(num2)
<type '
long'>

>>> num3=999L
>>> type(num3)
<type 'long'>

4.浮点型

#1.2e10代表的数值为1.210次方;
#12e9代表的数值为129次方;

>>> f1=12.0
>>> type(f1)
<type 'float'>
>>> f2=1.2e10
>>> type(f2)
<type '
float'>

5.波尔类型

#只包含True|False两种,注意开头字母大写,不识别小写

In [9]: a=True
In [10]: type(a)
Out[10]: bool

In [11]: b=False
In [12]: type(b)
Out[12]: bool


注:如果括号里面有数值,返回True,否则False。0也返回Flase

>>> a=123
>>> bool(a)
True
>>> b=""
>>> bool(b)
False
>>> bool(-1)
True
>>> bool(1)
True
>>> bool(0)
False

6.复数类型

#python对复数提供内嵌支持,eg: 3.14j, 8.32e-36j

>>> c=3.14j
>>> type(c)
<type '
complex'>

二、python类型转换的工厂函数

int('1'), long(1), float(1), bool(-1), bool(0), complex(1)

#将a从整型转换为长整型:

>>> a=123
>>> type(a)
<type 'int'>
>>> a=long(a)
>>> type(a)
<type 'long'>
>>> a
123L

三、BIF: built-in function内置函数(*只介绍一部分)

cmp:比较大小

In [37]: cmp(1,2)
Out[37]: -1
In [38]: cmp(2,1)
Out[38]: 1
In [39]: cmp(1,1)
Out[39]: 0
type(变量名):查看变量类型

In [42]: a=1
In [43]: type(a)
Out[43]: int
str:转换为字符串

In [40]: str(1)
Out[40]: '1'

四、进制转换

不同进制转换: hex(16), oct(8)
ASCII码转换: ord('A'), chr(97)

hex转换为16进制

oct转换为8进值

In [47]: hex(1)
Out[47]: '0x1'

In [48]: oct(1)
Out[48]: '01'


ord‘A’)将A转换为对应的ASDII码  

chr(97)反向查询97这个ASDII码对应的字符

操作符

一、算术运算符:+, -, *, /**, %, //

>>> 2**3
8
>>> 5%2
1

注:在2.x版本和3.0版本python“/”的结果是不同的

In [25]: 5/2
Out[25]: 2
In [26]: 5//2
      #两种方式的结果都是5除以2等于2
Out[26]: 2
In [27]: from __future__ import division
  #使用这条指令将当前2.x环境转换为3.0版本python的精确计算方式
In [28]: 5/2
Out[28]: 2.5
     #现在执行5除以2得到的是2.5而不是2
In [29]: 5//2
      #5//2才会只取整数位
Out[29]: 2

>>> a=1111
>>> b=111111L
>>> a+b
112222L

二、赋值运算符: +=, -=, *=...... (注意: a+=2 实质上是a=a+2; python中不支持a++,但支持++a)

三、比较运算符: >, >=, <, <=, !=, ==(注意: 结果是bool类型,只能是True或者False)

>>> 1>2
False

注:==除了会判断是否相等,还会判断是否同一类型,如'1' == 1就会返回False错误(字符串和数值不相等)

三、逻辑运算符:逻辑与and, 逻辑或or, 逻辑非not

#如果为空,not+变量的返回值就为True

>>> warn = ""
>>> not warn
True
>>> a="hello"
>>> not a
False
>>> not ""
True

输入输出

Input:(python2和python3中不同:2.0版本中使用raw_input和input来区分字符串和数值;3.0中使用input可以自动区分数值还是字符串)
    raw_input("提示信息:")            # 返回值是字符串
    input("提示信息")                    # 返回值是数值类型

In [68]: raw_input("输入Name:")
输入Name:vaon
Out[68]: 'vaon'

Output:
    print "显示%d条信息:%s" %(1, "占位符的内容")
    print """
        按照三引号之间的格式输出;
    """   

In [69]: print "vaon Is %d years old" %(18)      #%d表示占用一个位置,类型为数值类型。如果是字符串类型用%s代替
vaon Is 18 years old


In [70]: print """
   ....:         主机信息
   ....: 1.3一uyu6q7hh%&j
   ....: 2.--qeoids23230-
   ....: 3.jfhuyer-=-09==
   ....: """

        主机信息
1.3一uyu6q7hh%&j
2.--qeoids23230-
3.jfhuyer-=-09==

判断语句

注:python中不支持case语句,可以通过if...elif...elif...else实现

if ...
if ...  else ....
if ...  elif ... elif ... else ....

#python中不支持三目运算符:a>b?a:b

#但要实现三目运算符功能可以:a if a<b else b ,如果a<b就输出a,a>b就输出b

循环语句

一、for循环

for .... (注意: range(start, stop, step))

for .... if语句嵌套
for .... for语句嵌套

二、while循环

while实现无限循环:

    while True:

        ...

或者:

    while 1:

        ...

break和continue:

break:遇到break,跳出循环

continue:跳过此次循环,回到循环继续执行

range

range(start,stop,step):返回一个别表,从start开始,stop-1结束,步长为step

打印出1-10:

In [10]: range(1,11)
Out[10]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

打印出1-10的奇数:
In [11]: range(1,11,2)
Out[11]: [1, 3, 5, 7, 9]

注:python中特有的while...else...语句:

      如果满足while后面的语句,执行while循环的程序,如果不满足,执行else里面的程序

      其实if语句同样有if...else...语句


题目1

用户输入年龄,如果大于18,显示是成年人,否则显示不是成年人

解答:

#!/usr/bin/env python
#coding:utf-8
age=input("输入年龄:")
if age > 18:
    print "Age Is %d,You Are Adult" %(age)
else:
    print "Age Is %d,Not Adult" %(age)

题目2:


解答:

#!/usr/bin/python
#coding:utf-8
hostname=raw_input("输入主机名:")
IP=raw_input("输入IP:")
used_year=input("输入已使用时间:")
CPU=raw_input("CPU信息:")
Memory=raw_input("内存大小:")
if used_year > 10:
    print "该服务器使用年限太久!"
else:
    print """
    主机信息
主机名:%s
ip:%s
使用年限:%d
CPU:%s
Memory:%s
"""%(hostname,IP,used_year,CPU,Memory)
题目3:

判断是否闰年

#!/usr/bin/python
#coding:utf-8
"""
判断是否闰年的方法:
    1.能被4整除但不能被100整除
    2.或者满足能被400整除
"""

year = input("Year:")
if (year%4 == 0 and year%100 != 0) or year%100 ==0:
    print "%d Is Leap" %(year)
题目4:

打印九九乘法表

1*1=1

1*2=2  2*2=4

1*3=3  2*3=6  3*3=9

        ...

解答:

#!/usr/bin/env python
# coding:utf-8
for n in range(1,10):
    for m in range(1,n+1):
        print "%d*%d=%d" %(m,n,m*n),       #如果打印时不想换行,在print最后面加逗号即可
    print                                                             #打印空行
题目5:

计算1+2+3+...+10000的和,并输出脚本运行时间

解答:

#!/usr/bin/env python
# coding:utf-8
import time                                 #调用time函数
start = time.time()                      #开始时间,计时
sum=0
for m in range(1,10001):
    sum+=m
print "求和结果:%d" %(sum)
stop = time.time()                      #结束时间,计时
print "脚本运行时间:%s" %(stop - start)    #结束时间减开始时间

题目6:

1.系统中用户名密码为admin和redhat

2.用户登陆时,为防止暴力破解,仅有三次机会

3.如果登陆成功,显示登陆成功

解答:

#!/usr/bin/env python
# coding:utf-8
n=0
while n < 3:
    name=raw_input("输入用户名:")
    passwd=raw_input("输入密码:")
    if name == "admin" and passwd == "redhat":
        print "登陆成功"
        break
    else:
        print "输入正确的用户名或密码"
    n+=1
else:
    print "输入超过3次,请稍后再试"