python初步学习
一、字符编码
ASCII表是是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。由于中国也需要自己的语言,但剩下的128个表不能满足中国汉字的需求,所以采用了索引的方法,建立了中国字符编码即简体中文的GB2312和用于繁体中文的big5。
后来随着发展汉字库也有所增加,1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。
这种情况在国外也通用,所以造成了字符编码混乱,所以国际为了同一标准,确定了UTF-32,它占用4个字节,对于某些国家(如美国)就会多消耗3倍的存储,所以utf-32一直优化到utf-16最后至utf-8。
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存(之前GBK等编码汉字是2个字节保存)。
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
#!/usr/bin/env python print "你好,世界"
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- print "你好,世界"
二、用户输入
使用input()函数可以从键盘获取值,它的返回值类型是str。
使用getpass.getpass()可以从键盘得到数据且不可被显示屏看到。
三、函数初始
str[]相当于C语言中的数组,即python的列表。
str.index("str1"),在列表str中找str1字符串并返回下标
str.count("str1")在列表str中统计str1字符串出现的次数
type(str)显示str的数据类型
str.insert(num,str1)在列表str的下标为num出插入str1
str.append(str1)在列表str最后追加str1
str.pop(num)删除下标为num的内容,默认删除最后一个
str.remov('str1')删除内容是str1
del str[num]删除指定下表额内容
str.isdigit()判断str是否全是数字
str[:]切片,前取后不取
练习一
跳出多层循环 ,三层循环, 最里层,直接跳出3层
key=0 for i in range(3): if key=='y': break else: print(i,"first loop") for j in range(4): if key == 'y': break else: print(j,"second loop") for k in range(5): key = input('do you want to break the all loop? y/n') if key=='y': break else: print(k,"third loop")
练习二
程序:购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
good =['phone','shoes','clothes','headset','apple','computer',] price=[5000,200,150,2000,2,8000] money = input("please your wages") if money == 'out': print("You didn't buy anthing and thank for your shopping") exit() else: i=0 while i<len(good): print(i,good[i],price[i]) i+=1 num = 0 sc=[] money=int(money) key = 0 while True: if key == 1: print('you have ben bought these goods') j=0 while j < len(sc): print(sc[j]) j += 1 print('you have ',money,'left') exit() else: buy = input("please choose your goods") if buy=="out": key = 1 continue elif buy.isdigit(): buy = int(buy) if buy<5 and buy >= 0: if money>=price[buy]: sc.insert(num,good[buy]) money=money-price[buy] num =num + 1 else: print("you don't have enough money") continue else: print("no this goods number") continue else : if buy in good: if money < price[good.index(buy)]: print("you don't enough money") continue else: money=money-price[good.index(buy)] sc.insert(num, buy) num =num+ 1 else: print("not this good") continue