Python基础

#####清屏功能:#转自廖雪峰Python#

    再cmd环境中,写:
import os
os.system('cls')

 CTRL+F6为 重启  restart

1、数据类型和变量

Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648-2147483647

Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。

Python还允许用r''表示''内部的字符串默认不转义

为了简化,Python允许用'''...'''的格式表示多行内容

地板除 10 // 3 得到的结果为3

转义字符的使用,请打印出以下变量的值:

n = 123
f = 456.789
s1 = 'Hello, world'   s1 = '\'Hello, world\''  print("s1 =", s1)
s2 = 'Hello, \'Adam\''  s2 = '\'Hello, \\\'Adam\\\''  print s2
s3 = r'Hello, "Bart"'
# Python还允许用r''表示''内部的字符串默认不转义
s3 = 'r\'Hello, "Bart"\''
print s3
s4 = r'''Hello, Lisa!'''
s4 = 'r\'\'\'Hello, Lisa!\'\'\''
print s4
2、字符串和编码
ASCII编码是1个字节,而Unicode编码通常是2个字节,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,
常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节,节约空间

python是以unicode的,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
%%来表示一个%:转义需要输出 "%"
在Python中,采用的格式化方式和C语言是一致的,用%实现
'Hi, %s, you have $%d.' % ('Michael', 1000000)
print('%2d-%02d' % (3, 1))   #输出 3-01
print('%.2f' % 3.1415926) #输出3.14

str和bytes互相转换时,需要指定编码。最常用的编码是UTF-8
# 小明的成绩从去年的72分提升到了今年的85分,
# 请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',
# 只保留小数点后1位:
s1 = 72
s2 = 85
r = (s2-s1)/s1*100
print (r)
print('Hello, {0}, 成绩提升了{1:.1f}%'.format('小明', r))
print('%s成绩提升了 %.1f%%' % ('小明', r))
 
3.使用list和tuple
List:

如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:

list里的元素可以包含list,S=['python','jack',['java','mysql'],123]
S中java:S[2][0],可以视为二维数组

Tuple:一种有序列列表叫元组,元素在初始化时被确定,以后不可修改

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:t=(1,)

实例一个指向list可变的Tuple

>>> t = ('a', 'b', ['A', 'B'])

>>> t[2][0] = 'X'

>>> t[2][1] = 'Y'

>>> t

('a', 'b', ['X', 'Y']) 
 #其实变的不是tuple的元素,而是list的元素 tuple所谓的“不变”是说,tuple的每个元素,指向永远不变

 

4.条件判断

在议论input():

s = input('birth: ')

birth = int(s)  #input()函数返回的是str,需要强制类型转换为整数

if birth < 2000:

    print('00前')
else:
    print('00后')

    

    

5.循环

range(101)就可以生成0-100的整数序列

sum = 0

for x in range(101):

    sum = sum + x

print(sum)  #5050

while循环

sum = 0

n = 99

while n > 0:

    sum = sum + n

    n = n - 2

print(sum)

continue循环

continue的作用是提前结束本轮循环,并直接开始下一轮循环。

如果我们想只打印奇数,可以用continue语句跳过某些循环:

n = 0

while n < 10:

    n = n + 1

    if n % 2 == 0: # 如果n是偶数,执行continue语句

        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行

    print(n)

    

6.使用dic 和set

dic:

python内置了字典 dic dictionary,比如Java里的key-value值对

d={'a':1,'b':2,'c':3}

>>> d[a]

也可以通过key放入,d['aa']=1

dic有的优点:

1.查找和插入的时间随着元素的+而+

2.需要占用大量的内存,空间换取时间的做法

注意点:dic的key是不可变对象,在python中 字符串 int 可作为key,而list是不可变的,不可以做为key

set:

不存储value,key是唯一的  s=set([1,1,2,3,4])

s.add(5),s.remove(key)

set可以看成数学意义上的无序和无重复元素的集合,两个set可以做数学交集 并集操作
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

再议不可变对象

str是不变对象,而list是可变对象

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'

a是变量,而'abc'才是字符串对象!有些时候,我们经常说,对象a的内容是'abc',但其实是指,a本身是一个变量,它指向的对象的内容才是'abc'
当我们调用a.replace('a', 'A')时,实际上调用方法replace是作用在字符串对象'abc'上的,而这个方法虽然名字叫replace,但却没有改变字符串'abc'的内容
。相反,replace方法创建了一个新字符串'Abc'并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串'abc',但变量b却指向新字符串'Abc'了:

?tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。?

ss=set([t[0],[t[1][0],t[1][1]]])  报错unhashable type: 'list'

tuple是不可变的,但是其元素list是可变的,set的key需要不可变的对象

print('%s的十六进制为: %s' %(x,hex(x)))


posted @ 2017-10-23 09:27  smartwen  阅读(189)  评论(0编辑  收藏  举报