Python基础题

1、 执行Python脚本的两种方式:

Chmod +x 脚本
./脚本(路径的方式)
Python  脚本

2、 简述位、字节的关系

一个字节=8位

3、 简述ASCII、unicode、utf-8/gbk的关系

        Ascii:由一个字节组成,共能表示256个字符
        Unicode万国码,
		Utf-32:  32位,表示每个字符占32位
		Utf-16:	16位,表示每个字符占16位
		Utf-8:	可边长的字符编码,一个英文字母和数字占位8位,欧洲文字占16位,汉字占24位
		GBK:汉字的编码扩展规范,GBK2312---GBK1.0----GB18030

4、请写出“李杰”分别用UTF-8和gbk编码所占的位数

gbk:4个字节====32位
    utf-8:六个字节===48位

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

单行:#
    多行:''' '''或""" """

6、声明变量注意哪些事项

    1)、变量是由数字、字母和下划线组成
    2)、变量不能有数字开头
    3)、变量尽量不要以下划线开头
    4)、不能以python内置变量命名变量名
    5)、变量名尽量做到见名知意

8、如何查看变量在内存中的地址?

id(变量)

9、执行Python程序时,自动生产的.pyc文件的作用是什么?

.pyc文件是二进制文件,有python文件编译后生成的字节码文件,作用:能加快文件的执行

10、写代码

a、实现用户输入用户名和密码,当用户名为sever且密码为123时,显示登录成功,否则登录失败!
        #!/usr/bin/env python
        import getpass
        name = input("please input username:")
        password  = getpass.getpass("please input pwd:")
        if name == "server"  and  password == "123":
            print("welcome to server")
        else:
            print("username or password error")
b、实现用户输入用户名和密码,当用户名为sever且密码为123时,显示登录成功,否则登录失败,允许用户输入三次
        #!/usr/bin/env python
        import getpass
        name = input("please input username:")
        password  = getpass.getpass("please input pwd:")
        count = 0
        while True
            count += 1
            if name == "server"  and  password == "123":
                print("welcome to server")
            else:
                print("username or password error")
            if count == 3:
                break
c、实现用户输入用户名和密码,当用户名为sever或alex且密码为123时,显示登录成功,否则登录失败,允许用户输入三次
        #!/usr/bin/env python
        import getpass
        name = input("please input username:")
        password  = getpass.getpass("please input pwd:")
        count = 0
        while True
            count += 1
            if name == "server" or name == "alex"  and  password == "123":
                print("welcome to server")
            else:
                print("username or password error")
            if count == 3:
                break

11、写代码

a、使用while循环,实现2-3+4-5+6-7+8.....+100的和
        #/usr/bin/env python
        #-*- coding:utf-8 -*-
        start = 1
        sum = 0
        while n > 1 and n < 100:
            temp = start % 2
            if temp == 1:
                sum = sum - start
            else:
                sum = sum + start
            start += 1
         print(sum)
b、使用for循环和range,实现1-2+3-4+5-6.......+99的和
    #!/usr/bin/env python
    sum = 0
    for i in range(99):
        if i%2 == 1:
            sum = sum + i
        else:
            sum = sum - i
    print(sum)
c、使用while循环实现输出1,2,3,4,5,7,8,9,11,12
        #!/usr/bin/env python
        n = 0
        while  n < 12:
            n += 1
            if n == 6 or n == 10:
                continue
            print(n)
d、使用while循环,实现1-100内所有奇数
    #!/usr/bin/env python
    n = 0
    while  n < 100:
        n += 1
        if n%2 == 1:
            print(n)
e、使用while循环,实现1-100内所有偶数
    #!/usr/bin/env python
    n = 0
    while  n < 100:
        n += 1
        if n%2 == 0:
            print(n)

12、分别书写出5,10,32,7的二进制表示:

5: 0000 0101
    10:0000 1010
    32:0010 0000
    7: 0000 0111

13、

14、现有两个如下变量,请简述n1和n2是什么关系?

n1 = 123
    n2 = 123
    n1和n2值相同,且指向同一个内存地址(255以内Python自动做)

15、现有如下两个变量,请简述n1和n2是什么关系?

n1 = 123456
    n2 = 123456
    只是两个值相等的变量,其他没有任何关系

16、现有如下两个变量,请简述n1 n2是什么关系?

n1 = 123456
    n1 = n2
    n1和n2 值相同,且指向同一个内存地址,但是修改后相互不影响

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

>>> print(n1.bit_length())
        3

18、布尔值分别有什么?

True   和   False

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

a = "alex"
    b = a.capitalize()   #首字母大写
    print(a)
    print(b)
    alex
    Alex

20、写代码,有如下变量,请按照要求实现每个功能
name = "alex"

    a、移除name变量对应的值两边的空格,并输入移除有内存
        print(name.strip())

    b、判断name变量对应的值是否以"al"开头,并输出结果
        >>> name = "alex"
        >>> print(name.startswith("al"))
        True
    c、判断变量name是否以"X"结尾
        >>> print(name.endswith("X"))
        False
    d、将name便量对应的值根据“I”替换为“P”,并输出结果
        >>> name = "alex"
        >>> print(name.replace('l','p'))
        apex
    e、将name变量对应的值根据"l"分割,并输出结果
        >>> print(name.partition('l'))
        ('a', 'l', 'ex')
    f、请问,上一题e分割之后得到的是什么类型
        列表
    g、将name变量对应的值变大写,并输出结果
        >>> print(name.swapcase())
        ALEX
    h、将name变量对应的值变小写,并输出结果
        >>> name = "ALEX"
        >>> print(name.lower())
        alex

    i:请输出name变量对应值的第二个字符
        >>> name[1]
        'L'
    j、请输出name变量对应的值得前三个字符?
        >>> name[0:3]
        'ALE'
    k、请输出name变量的后两个字符
        >>> name[-2:]
        'EX'
    l、请输出name变量中“e”所在的索引位置
        >>> print(name.find('E'))
        2

21、字符串是否可迭代?如可以请用for循环没一个元素

可以迭代
         >>> for i in name:
            ...     print(i)
            ...
            A
            L
            E
            X

22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain']

>>> print("_".join(li))
alex_eric_rain

22、写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'eric', 'rain']
a. 计算列表长度并输出

>>> print(len(li))
        3

b. 列表中追加元素 “seven”,并输出添加后的列表

>>> li.append("seven")
    >>> print(li)
    ['alex', 'eric', 'rain', 'seven', 'seven']

c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表

>>> li.insert(1,"Tony")
    >>> print(li)
    ['alex', 'Tony', 'eric', 'rain', 'seven', 'seven']

d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表

>>> li[2]="Kelly"
>>> print(li)
['alex', 'Tony', 'Kelly', 'rain', 'seven', 'seven']

e. 请删除列表中的元素 “eric”,并输出修改后的列表

>>> li.append("eric")
>>> print(li)
['alex', 'Tony', 'Kelly', 'rain', 'seven', 'seven', 'eric']
>>> li.remove("eric")
>>> print(li)
['alex', 'Tony', 'Kelly', 'rain', 'seven', 'seven']

f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表

>>> li.pop(1)
'Tony'

g. 请删除列表中的第 3 个元素,并输出删除元素后的列表

>>> li.pop(2)
'seven'
>>> print(li)
['alex', 'rain', 'seven']

h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表

>>> del li[1:4]
>>> print(li)
['alex']

i. 请将列表所有的元素反转,并输出反转后的列表

>>> li = ['alex', 'eric', 'rain']
>>> li.reverse()
>>> print(li)
['rain', 'eric', 'alex']

j. 请使用 for、len、range 输出列表的索引

>>> for i in li:
...     print(li.index(i))
...
0
1
2
>>> for i in range(len(li)):
...     print(i)
...
0
1
2

k. 请使用 enumerate 输出列表元素和序号(序号从 100 开始)

>>> for index,key in enumerate(li,100):
...     print(index,key)
... 
100 alex
101 eric
102 rain

l. 请使用 for 循环输出列表的所有元素

>>> for i in li:
...     print(i)
...
rain
eric
alex

23、写代码,有如下列表,请按照功能要求实现每一个功能 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
a. 请输出 “Kelly”

>>> li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
>>> li[2][1][1]
'kelly

b. 请使用索引找到 'all' 元素并将其修改为 “ALL”

>>> li[2][2] = "ALL"
>>> print(li)
['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]

24、写代码,有如下元组,按照要求实现每一个功能 tu = ('alex', 'eric', 'rain')

a. 计算元组长度并输出

>>> tu = ('alex', 'eric', 'rain')
>>> len(tu)
3

b. 获取元组的第 2 个元素,并输出
>>> tu[1]
'eric'

c. 获取元组的第 1-2 个元素,并输出
>>> tu[0:2]
('alex', 'eric')

d. 请使用 for 输出元组的元素
>>> for i in tu:
...     print(i)
...
alex
eric
rain

e. 请使用 for、len、range 输出元组的索引
>>> for i in range(len(tu)):
...     print(i)
...
0
1
2


f. 请使用 enumerate 输出元祖元素和序号(序号从 10 开始)

>>> for index,key in enumerate(tu):
...     print(index,key)
...
0 alex
1 eric
2 rain

25、有如下变量,请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])

a. 讲述元祖的特性
    除了元素不能修改外,其他和列表一样
b. 请问 tu 变量中的第一个元素 “alex” 是否可被修改?
    不能
c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
   k2是列表,可以被修改,
   >>> print(tu[1][2]["k2"].append("server"))
    None
    >>> print(tu[1][2]["k2"])
    ['age', 'name', 'server']
d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
    k3是元组
    不能被修改

26、字典 dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}

a. 请循环输出所有的 key
>>> for i in dic:
...     print(i)
...
k3
k1
k2
b. 请循环输出所有的 value

>>> for i in dic:
...     print(dic[i])
...
[11, 22, 33]
v1
v2

c. 请循环输出所有的 key 和 value
>>> dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
>>> for i in dic.items():
...     print(i)
...
('k3', [11, 22, 33])
('k1', 'v1')
('k2', 'v2'

d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
>>> dic["k4"]= "v4"
>>> print(dic)
{'k4': 'v4', 'k3': [11, 22, 33], 'k1': 'v1', 'k2': 'v2'}


e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典
>>> dic["k1"]="alex"
>>> print(dic["k1"])
alex


f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
>>> dic["k3"].append("44")
>>> print(dic["k3"])
[11, 22, 33, '44']

g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典
>>> dic["k3"].insert(1,"18")
>>> print(dic["k3"])
[11, '18', 22, 33, '44']

27、转换

a. 将字符串 s = "alex" 转换成列表
>>> list(s)

b. 将字符串 s = "alex" 转换成元祖
>>>tuple(s)
b. 将列表 li = ["alex", "seven"] 转换成元组
>>>tuple(li)
c. 将元祖 tu = ('Alex', "seven") 转换成列表
>>>list(tu)
d. 将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增

li = ["alex","seven"]
dic = {}
for i,v in enumerate(li,10):
    dic.setdefault(i,v)
    print(dic)

27、转码 n = "老男孩"

a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出
print(n.encode(encoding="utf-8"))
执行结果
b'\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9'
print("\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9".encode(encoding="utf-8"))
执行结果
b'\xc3\xa8\xc2\x80\xc2\x81\xc3\xa7\xc2\x94\xc2\xb7\xc3\xa5\xc2\xad\xc2\xa9'

b. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出
print(n.encode(encoding="gbk"))
执行结果
b'\xc0\xcf\xc4\xd0\xba\xa2'
print("\xc0\xcf\xc4\xd0\xba\xa2".encode(encoding="gbk"))
执行结果
UnicodeEncodeError: 'gbk' codec can't encode character '\xc0' in position 0: illegal multibyte sequence

28、求 1-100 内的所有数的和

#!/usr/bin/env python
sum = 0
for i in range(101):
	sum += i
print(sum)

29、元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90],
将所有大于 66 的值保存至字典的第一个 key 中,
将小于 66 的值保存至第二个 key 的值中。 即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值}

#!/usr/bin/env python
d1 = {"k1":[],"k2":[]}
li = [11,22,33,44,55,66,77,88,99,90]
for i in li:
	if i > 66:
		d1["k1"].append(i)
	else:
		d1["k2"].append(i)
print(d1)

30、购物车 功能要求: 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,加入购物车 购买,
如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [ {"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]

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

shopping_car = {}
goods = [ {"name": "电脑", "price": 1999},
            {"name": "鼠标", "price": 10},
            {"name": "游艇", "price": 20},
            {"name": "美女", "price": 998}, ]

print("---------------欢迎光临本商场-----------------------")
salary = int(input("input your salary:"))

while True:
    index = 0
    for product in goods:
        print(index,product)
        index += 1

    choice = input("请输入选择的商品序号:").strip()   #输入商品序号,去除空格
    if choice.isdigit():    #判断输入的序号是否是数字
        choice=int(choice)
        if choice >=0 and choice < len(goods): #判断输入数字是否在产品列表范围内
            product = goods[choice]                #选择的商品
            if product["price"] <= salary:    #买的起
                if product["name"] in shopping_car:
                    shopping_car[product["name"]]["price"] += 1
                else:
                    shopping_car[product["name"]] = [product["price"],1]
                salary -= product["price"]
                print("您购物车里添加了" + product["name"] + "余额是:" + str(salary))
            else:
                print("您的余额不足,请选择其他便宜的商品!!")
        else:
            print("您输入的商品序号不存在,请重新选择!!")

    elif choice == "q":
        print("------------已购买商品----------")
        id_counter = 1
        total_cost = 0
        print("ID     商品        数量       单价      总价")
        for key in shopping_car:    #循环所有的购物车列表
            print("%s%10s%10s%10s%10s"   %(id_counter,
                  key,
                  shopping_car[key][1],
                  shopping_car[key][0],
                  shopping_car[key][1]*shopping_car[key][0]))
            id_counter +=1
            total_cost += shopping_car[key][1]*shopping_car[key][0]
        print("总花费为:"+str(total_cost))
        print("余额为:"+ str(salary))
        break
    else:
        print("无此选项")
posted @ 2017-03-31 18:46  f_manito  阅读(734)  评论(0编辑  收藏  举报