Python练习题目1

1、执行Python脚本的两种方式
第一种:/usr/local/bin/python3.2 Hello.py,
即直接将python文件传递给python解释器,由python解释器来执行脚本。
第二种:在Python文件的头部指定Python解释器的路径,类似于Shell脚本中的#!/bin/bash,这样在执行python脚本的时候就不需要再
添加Python解释器的路径了。
我们平时常用的一种方式就是python python脚本,属于第一种。

2、简述位、字节的关系
在计算机当中,字节(Byte)是存储数据的基本单位,一个字节占8位(bit)。

3、简述编码的相应概念。
编码的概念分为两种:文件编码和解释器编码。
其中文件编码就是一个数据在计算机的底层到底用哪种二进制形式来进行存储,如ASCII、Unicode、utf-8和gbk码等等。
其中解释器编码就是解释器以哪种编码格式来解析整个文件,如ASCII、Unicode、utf-8和gbk码等等。
因此本地文件的字符以哪种编码格式来进行存储,我们就指定解释器以哪种编码格式来解析文件即可,进而避免出现乱码的问题。

4、简述ASCII、Unicode、utf-8和gbk码之间的关系。
ASCII:这种编码格式是用8位即一个字节来表示一个字符,所以ASCII码最多只能表示256个字符。
如:A这个字符对应的Ascii编码为01000001.
缺点:ASCII码无法将世界上的各种文字和符号全部表示出来,主要用于显示现代英语和其他西欧语言。
Unicode:这种编码格式规定至少用两个字节(即16位)来表示一个字符,解决了所有字符和符号的编码问题。
缺点:对于用传统ASCII码只用一个字节就可以表示的256个字符来说,大大的浪费了内存空间。
UTF-8:这种编码格式是对Unicode编码的压缩和优化,不再使用最少2个字节来表示一个字符,而是将所有的字符和符号进行分类:其中传统ASCII码对应的256个仍用1个字节保存、欧洲的字符用2个字节保存,东亚的字符(如汉字)用3个字节保存。
优点:UTF-8码用最少的字节数解决了所有字符的编码问题,大大减少了内存空间的消耗。
gbk:这种编码格式是用16位即两个字节来表示一个汉字字符,但是不能解决汉字和英文以外的字符的编码问题。
优点:对于同一个汉字,使用gbk编码在底层是以两个字节来进行表示,而utf-8却是用三个字节来进行表示。
缺点:利用gbk这种编码只能解决汉字以及基本英文字符的存储问题。

5、假如我现在有一个文件是以gbk这种编码格式进行存储的,为什么用UTF-8这种编码格式读取是错误的?
因为gbk这种编码在硬盘上是用16位来存储一个汉字字符,如0000000111110001,如果我们用UTF-8这种编码格式来进行读取,就会读取3个字节,此时就会出现乱码的问题。

6、python解释器是按照什么规则读取的文件?
python3.0解释器默认是按照utf-8编码格式读取的文件,在python2.0中解释器默认是按照ASCII编码格式读取的文件,所以python2.0是默认情况下是识别不了汉字的,出现中文肯定会报错。

7、Python中的单行注释和多行注释分别用什么?

单行注释:#
多行注释:
"""
"""

8、声明变量注意事项有哪些?
声明变量的要求:只能由字母、数字和下划线构成,且不能以数字进行开头,不能使用python内置的关键字。
在Python当中,变量的命名一般用下划线进行分割:user_id,不提倡使用驼峰式方法:user_Id。

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

10、布尔值分别有什么?
True和False

11、python中capitalize()函数的用法?
将字符串的第一个字母变成大写,其他字母变小写。

name1 = “zhaNmgfdsljkD”
name2 = name1.capitalize()
print(name1)
print(name2)

运行结果:
zhaNmgfdsljkD
Zhanmgfdsljkd

12、简述Python中字符串的相关语法。
字符串的声明
age = 18
new_age = str(age)
print(type(new_age))

    --字符串拼接:+号和占位符的用法
    name = "Alex的年龄是:"
    age = 25
    print name+str(age)   #Alex的年龄是:25
    占位符在字符串拼接中的使用:(很重要)
    name = "我叫李杰,性别:%s,我今年%d岁,我在说谎!"
    new_str = name % ("男", 25 )
    print new_str

    --判断子序列是否在序列之中
    innot in的用法

    str1 = "他的名字叫做Alex,他的年龄是25"
    if "Alex" not in str1:
        print True
    else:
        print False

    --去除空白
    strip()用于移除字符串左右全部空白和换行符\n,lstrip()用于移除左侧空白,rstrip()用于移除右侧空白,中间的没有办法
    移除空白,可以考虑用替换。
    str1 = "    他的名字叫做Alex,他的年龄是25  "
    print str1
    str2 = str1.strip()
    print str2
    str3 = str1.lstrip()
    print str3
    str4 = str1.rstrip()
    print str4

    --分割
    user_info = "Alex|sb234|9"
    splited = user_info.split("|")
    print(type(splited))
    print splited
    'list'>
    ['Alex', 'sb234', '9']

    user_info = "Alex|sb234|9"
    #从左侧第一个进行分隔符进行分割,将字符串拆分成两部分。
    splited = user_info.split("|",1)     #默认就是从左侧开始进行分割的
    print splited
    #从右侧第一个进行分隔符进行分割,将字符串拆分成两部分。
    splited = user_info.rsplit("|",1)
    print splited
    ['Alex', 'sb234|9']
    ['Alex|sb234', '9']

    --长度
    1、在python3当中len是按照字符进行分割的,在Python2当中len是按照字节进行分割的。
    name = "李杰sb"
    print len(name)  #python2.0中显示的是8个,在Python3.0中显示的是4个
    一个字符串是由若干个字符组成的,name实际上就是由4个字符组成的。

    --索引
    name = "李杰sb"
    print name[0]  #李
    print name[1]  #杰
    print name[2]  #s
    print name[3]  #b 
    注意:在Java当中字符串只有转化成字符串数组之后,才可以用索引进行输出。
    name = raw_input("请输入字符串:")
    i = 0
    while i < len(name):
        print name[i]
        i += 1

    --切片(用法和Java是一样的),将字符串的某一部分给切分出来
    name = "oldboyAlexWupeiqi"
    print name[0]
    print name[1]
    print name[2]
    print name[0:5]   #从索引的0位置开始到<5结束
    print name[5:9]   #从索引的5位置开始到<9结束
    print name[5:]
    print name[5:-1]  #不包括倒数第一个字符i
    print name[5:-2]  #不包括倒数第一个、第二个字符i和q
    print name[0:10:2]  #2代表步长是2
    print name[-3:]
    运行结果:
    o
    l
    d
    oldbo
    yAle
    yAlexWupeiqi
    yAlexWupeiq
    yAlexWupei
    odoAe
    iqi

13、
Python练习题目1_第1张图片
Python练习题目1_第2张图片
相应答案

#!/usr/bin/python
# -*- coding:utf-8 -*-

name = " aleX"
print(name)

print(name.strip())

if name.startswith("al"):
    print True
else:
    print False

if name.endswith("X"):
    print True
else:
    print False

print name.replace("l","p")

print name.split("l")

print type(name.split("l"))

print name.upper()

print name.lower()

print name[2]

print name[3]

print name[-2:]

num = 0

print name.rfind("e")

print name[0:-1]

14、在Python当中字符串是否可以迭代对象,如可以请使用for循环遍历每一个元素。


name = "Alexeric"

i = 0
while i < len(name):
    print name[i]
    i += 1

15、利用下划线将列表中的每一个元素拼接成字符串,list = [“alex”,”eric”,”rain”]

list = ["alex","eric","rain"]

str = ""
for item in list:
    str += item

print str

16、Python2中的range和Python3中的range的区别?
python2中的range返回的是一个列表
python3中的range返回的是一个迭代值

17、实现一个加法计算器

#!/usr/bin/python
# -*- coding:utf-8 -*-

a = raw_input("请输入a的数值:")
b = raw_input("请输入b的数值:")
sum = int(a) + int(b)
print("sum的数值是%d"%sum)

18、

19、

20、
这里写图片描述

name = raw_input("请输入你的名字:")
destin = raw_input("请输入你的地点:")
favor = raw_input("请输入你的爱好:")
str = "敬爱可亲的%s,最喜欢在%s地方干%s"%(name,destin,favor)
print str

运行结果:
请输入你的名字:Alex
请输入你的地点:家里
请输入你的爱好:看电视
敬爱可亲的Alex,最喜欢在家里地方干看电视

21、
这里写图片描述

#!/usr/bin/python
# -*- coding:utf-8 -*-

value = raw_input("请输入相应的内容:")

sensitive_value1 = "苍老师"
sensitive_value2 = "东京热"

value2 = ""
value3 = ""
if sensitive_value1 in value:
    value2 = value.replace(sensitive_value1,"***")

if sensitive_value2 in value2:
    value3 = value2.replace(sensitive_value2,"***")

print value3

运行结果:

请输入相应的内容:fdsjlkj苍老师jfdsj苍老师fdjks东京热fdjls
fdsjlkj***jfdsj***fdjks***fdjls

你可能感兴趣的:(Python)