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")

练习二

 

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
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

 

posted @ 2017-03-28 00:59  天行健风行云  阅读(234)  评论(0编辑  收藏  举报