python 基础知识练习题

一、执行python的两种方式

    1、写在脚本里面调用python执行,列如python test.py

    2、输入python在命令行执行,列如 

          python >>> print 'hello world'

二、简述 位、子节的关系

    位(bit)来自英文bit,音译为”比特“,表示二进制位。位是计算机内部数据储存的最小单位。

    子节(byte)子节来自Byte。子节是计算机中数据处理的基本单位。计算机中以字节为单位储存和解释信息,规定一个字节是由八个二进制位构成,即1个字节等于8个比特(1Byte = 8 Bit)。八位二进制数最小为00000000,最大为11111111;通常1个字节可以存入1个ASCII,2个字节可以存放一个汉字国标码。

三、简述ascii,unicode,utf-8,gbk的关系

    1、ASCII码

        这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制定的编码规范,它能表示128个字符,其中包括英文字符、阿拉伯数字、西文字符以及32个控制字符。它用一个字节来表示具体的字符,但它只用后7位来表示字符(2^7=128),最前面的一位统一规定为0。

    2Unicode

正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。而Unicode就是这样一种编码:它包含了世界上所有的符号,并且每一个符号都是独一无二的。比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表 。很多人都说Unicode编码,但其实Unicode是一个符号集(世界上所有符号的符号集),而不是一种新的编码方式。

但是正因为Unicode包含了所有的字符,而有些国家的字符用一个字节便可以表示,而有些国家的字符要用多个字节才能表示出来。即产生了两个问题:第一,如果有两个字节的数据,那计算机怎么知道这两个字节是表示一个汉字呢?还是表示两个英文字母呢?第二,因为不同字符需要的存储长度不一样,那么如果Unicode规定用2个字节存储字符,那么英文字符存储时前面1个字节都是0,这就大大浪费了存储空间。


上面两个问题造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。2)unicode在很长一段时间内无法推广,直到互联网的出现。

    3、UTF-8

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。


UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。


UTF-8的编码规则很简单,只有两条:


1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。


2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码

    4、GBK/GB2312/GB18030

GBK和GB2312都是针对简体字的编码,只是GB2312只支持六千多个汉字的编码,而GBK支持1万多个汉字编码。而GB18030是用于繁体字的编码。汉字存储时都使用两个字节来储存。

ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。


拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符


GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。


Unicode编码:包含世界上所有的字符,是一个字符集。


UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

四、请写出‘张三’分别用utf-8和gbk编码所占的位数

        utf-8一般使用三个字节代表一个汉字,占位24位

        gbk使用两个字节代表一个汉字,占位16位

五、Python单行注释和多行注释分别用什么

        单行注释使用# 

        多行注释使用''' ''' 或者""" """包含

六、声明变量的注意事项有哪些

        1、变量由大小写字母,数字及下划线组成并且开始不能为数字。

        2、不能和python关键字重复

        3、不能使用系统函数作为变量名 

七、如果有变量n1 = 5,请使用int提供的方法得到该变量最少可以用多少个二进制位来表示

        >>>int(5).bit_length()

        3

        3位

八、布尔值分别有什么

        Ture和False

九、阅读代码请写出执行结果

        capitalize方法是首字母大写

a = 'zhangsan'
b = a.capitalize()
print(a)
print(b)

zhangsan
Zhangsan

十、写代码有以下变量,请按要求实现以下功能

        name = 'zhangsaN'

        a、移除变量那么对应两边的空格并且输出移除后的内容

name = '   zhangsaN'

v = name.strip()
print(v)

zhangsaN

        b、判定变量name是否以‘’zh‘’开头 ,并输出结果

name = 'zhangsaN'
v = name.startswith('zh')
print(v)

True

        c、.判定变量name是否以‘N’结尾,并且输出结果

name = 'zhangsaN'
v = name.endswith('N')
print(v)

Ture

        d、将h替换为p,并输出结果

name = 'zhangsaN'
v = name.replace('h','p')
print(v)

zpangsaN

        e、将变量以h分割,并输出结果

name = 'zhangsaN'
v = name.split('h')
print(v)

['z', 'angsaN']

        f、上一题以h分割后得到的是什么类型

分割后得到的类型是  list列表

        g、name变量变大写,输出结果

name = 'zhangsaN'
v = name.upper()
print(v)

ZHANGSAN

        h、name变量变小写,输出结果

name = 'zhangsaN'
v = name.lower()
print(v)

zhangsan

        i、.输出变量name的第二个字符

name = 'zhangsaN'
v = name[1]
print(v)

h

        j、输出变量name前三个字符

name = 'zhangsaN'
v = name[0:3]
print(v)

'zha'

        k、输出变量name后两个字符

name = 'zhangsaN'
v = name[-2:]
print(v)

'aN'

        l.输出变量name中h所在是索引位置

name = 'zhangsaN'
v = name.find('h')
print(v)

1

        m.输出子序列不包括最后一个字符

name = 'zhangsaN'
v = name[0:-1]
print(v)

'zhangsa'

十一,字符串是否可迭代对象,请使用循环输出每一个元素

        字符串可以迭代,可以被for循环进行循环的就是可迭代对象 

name = 'zhangsaN'
for item in name:
    print(item)
十二,请用代码实现

  a,利用下划线将每一个元素拼接为字符串li = ‘zhangsan’

name = 'zhangsaN'
v = "_".join(name)
print(v)

z_h_a_n_g_s_a_N

  b,利用下划线将每一个元素拼接为字符串li = ['zhangsan','lisi','wangwu']

li = ['zhansan','lisi','wangwu']
v = "_".join(li)
print(v)

zhansan_lisi_wangwu


十三,python2和python3中函数range的区别


python2中range返回的是一个list列表,xrange和Python3里面的range效果是一样的

python3中返回的是一个迭代值


十四,实现一个整数加法运算

  如:content=(‘请输入内容例如5+9:’)

content = input("请输入内容 如5+9")
v = content.split("+")
n1 = v[0]
n2 = v[1]
all = int(n1) + int(n2)
print(all)

十五,计算用户输入的有多少个数字,多少个字母

content = input("请输入要查询的字符串")
strnumber = 0
intnumber = 0
for item in content:
    if item.isalpha():
        strnumber += 1
    elif item.isdigit():
        intnumber += 1
print('字母数为:',strnumber)
print('数字数为:',intnumber)

同过迭代遍历输入的字符串,如果是数字或者字母则相应的总数+1

十六,制作趣味模板程序根据用户输入姓名,地点,爱好输出 亲爱的xxx喜欢在xxx做xxx

name = input('请输入姓名:')
add = input('请输入地点:')
thing = input('请输入你喜欢做的事情:')

dic = {"name":name,"add":add,"thing":thing}
t = "亲爱的{name},喜欢在{add}做{thing}"
t1 = t.format_map(dic)
print(t1)

十七,制作随机验证码,不区分大小写

def check_code():
  import random
  checkcode = ''
  for item in range(4):
    current = random.randrange(0,4)
    if current != i:
      temp = chr(random.randint(65,90))
    else:
      temp = random.randint(0,9)
    checkcode += str(temp)
  return checkcode

while True:
    code = check_code()
    print(code)
    v = input('>>>')
    if v.upper() == code:
        print('You input is right')
        break
    else:
        continue

十八,开发敏感词过滤如果内容包含敏感字符则替换为***

inp = input("输入字符串:")
v = inp.replace('苍老师','***')
print(v)

        

猜你喜欢

转载自blog.csdn.net/weixin_41212405/article/details/80349078