第二周周考内容

‘’’
上海python15期第二次周考

1.请取出第一个学生的第一个爱好 (1分)

students_info = [ ['egon', 98, ['play', ]], ['alex', 18, ['play', 'sleep']]]

‘’’

答案:

‘’’

hobby = students_info[0][2][0]  # 'play'

‘’’

‘’’
2.请取出取公司名(1分)

info = {'name': 'egon', 'hobbies': ['play', 'sleep'], 'company_info': { 'name': 'Oldboy', 'type': 'education', 'emp_num': 40,}}
'''

答案:

‘’’

print(info['company_info']['name'])

‘’’

‘’’

3.请画出以下列表在内存中是如何存放的(1分)

list1 = [11,  22,  [333,  444]]

‘’’

答案: 画图

‘’’
4.用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式(1分)
#------------ info of Egon -----------
#Name : Egon
Age : 22
Sex : male
Job : Teacher
------------- end -----------------
‘’’

答案:

"""
print('''
------------ info of %s -----------
Name  : %s
Age   : %s
Sex   : %s
Job   : %s
------------- end -----------------
''' % (name, name, age, sex, work))

"""

‘’’
5.有一个字典students要求循环打印所有学生的详细信息,格式如下(1分)

students=[
{‘name’:‘egon’,‘age’:18,‘sex’:‘male’},
{‘name’:‘alex’,‘age’:38,‘sex’:‘fmale’},
{‘name’:‘wxx’,‘age’:48,‘sex’:‘male’},
{‘name’:‘yuanhao’,‘age’:58,‘sex’:‘fmale’},
{‘name’:‘liwenzhou’,‘age’:68,‘sex’:‘male’},
]

格式如下

<name:egon age:18 sex:male>
<name:alex age:38 sex:fmale>
<name:wxx age:48 sex:male>
<name:yuanhao age:58 sex:fmale>
<name:liwenzhou age:68 sex:male>

‘’’

students = [
    {'name': 'egon', 'age': 18, 'sex': 'male'},
    {'name': 'alex', 'age': 38, 'sex': 'fmale'},
    {'name': 'wxx', 'age': 48, 'sex': 'male'},
    {'name': 'yuanhao', 'age': 58, 'sex': 'fmale'},
    {'name': 'liwenzhou', 'age': 68, 'sex': 'male'},
]

答案

for student in students:
    dic = {}
    for key, value in student.items():
        dic[key] = value

    print(f'<name:{dic.get("name")} age:{dic.get("age")} sex:{dic.get("sex")}>')

‘’’
6.使用while循环输出1 2 3 4 5 6 8 9 10 11 12(1分)
7.求1-100的所有数的和(1分)
8.输出 1-100 内的所有奇数(1分)
9.输出 1-100 内的所有偶数(1分)
10.求1-2+3-4+5 … 99的所有数的和(1分)
‘’’

答案:

‘’’
6

number = 1
while number < 13:
    if number != 7:
        print(number)
        number += 1
    number += 1

7

number = 1
result = 0
while number < 101:
    result += number
    number += 1
            

8

number = 1
while number < 101:
    if number %2 != 0:
        print(number)
    number += 1

9

number = 1
while number < 101:
    if number %2 == 0:
        print(number)
    number += 1

10

   number = 1
    result = 0
    while number < 101:
        if number %2 == 0:
            result -= number
        else:
            result += number

‘’’

‘’’
11. # 写代码,有如下变量,请按照要求实现每个功能
a)name = " aleX"
b)移除 name 变量对应的值两边的空格,并输出处理结果(1分)
c) 判断 name 变量对应的值是否以 “al” 开头,并输出结果(1分)
d) 判断 name 变量对应的值是否以 “X” 结尾,并输出结果
(1分)
e)将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果(1分)
f)将 name 变量对应的值根据 “l” 分割,并输出结果。(1分)
g)将 name 变量对应的值变大写,并输出结果
(1分)
h)将 name 变量对应的值变小写,并输出结果
(1分)
i)请输出 name 变量对应的值的第 2 个字符?(1分)
j)请输出 name 变量对应的值的前 3 个字符?(1分)
k)请输出 name 变量对应的值的后 2 个字符?
(1分)
l)请输出 name 变量对应的值中 “e” 所在索引位置?
(1分)
m)获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。(1分)

12.列表与元组的区别的是什么?(1分)
‘’’

答案:

‘’’

1)name.strip()
2)name.startswith('al')
3)name.endswith('X')
4)name.replace('l', 'p')
5)name.split('l')
6)name.upper()
7)name.lower()
8)name[1]
9)name[:3]
10)name[-2:]
11)name.index('e')
12)name[:-1]
'''

‘’’
13.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
a)pythons={‘alex’,‘egon’,‘yuanhao’,‘wupeiqi’,‘gangdan’,‘biubiu’}
b)linuxs={‘wupeiqi’,‘oldboy’,‘gangdan’}
c)1. 求出即报名python又报名linux课程的学员名字集合(1分)
d)2. 求出所有报名的学生名字集合(1分)
e)3. 求出只报名python课程的学员名字(1分)
f)4. 求出没有同时这两门课程的学员名字集合(1分)
‘’’

答案

‘’’

print(pythons & linuxs)  # 集合pythons和linuxs中都包含了的元素
print(pythons | linuxs)  # 集合pythons或linuxs中包含的所有元素
print(pythons - linuxs)  # 只包含于pythons的元素,而linuxs中没有的元素
print(pythons ^ linuxs)  # 不同时包含于pythons和linux中的元素

‘’’

‘’’
14.有如下字典,要求循环取出字典中的key和value。

msg_dic={
    'apple':10,
    'tesla':100000,
    'mac':3000,
    'lenovo':30000,
    'chicken':10,

}
‘’’

答案

‘’’

while True:
    good_name = input('请输入购买的商品名称: ').strip()

    if good_name not in msg_dic:
        print("没有该商品")
        continue

    good_count = input('请输入商品数量: ').strip()

    if good_count.isdigit():

        good_count = int(good_count)

        good_price = msg_dic.get(good_name)

        good_tuple = (good_name, good_price, good_count)

        good_list.append(good_tuple)

    else:
        print('请输入数字')

    print('商品菜单: ', good_list)

‘’’

15.统计s='hello alex alex say hello sb sb’中每个单词的个数 (1分)

'''
s = 'hello alex alex say hello sb sb'
s_list = s.split(' ')
count_dic = {}

for i in s_list:
    if i not in count_dic:
        count_dic.update({i: 1})

    else:
        count = count_dic.get(i)
        count_dic.update({i: count + 1})

print(count_dic)
'''

16.有列表l=[‘a’,‘b’,1,‘a’,‘a’],去重,有序(1分),无序(1分)

‘’’

无序

l = ['a', 'b', 1, 'a', 'a']
new_list = list(set(l))
print(new_list)

有序

l = ['a', 'b', 1, 'a', 'a']

根据顺序去重

new_list = []
for line in l:
    if line not in new_list:
        new_list.append(line)
print(new_list)
'''

17.声明变量时需要注意的有哪些?(1分)

'''
    1.字母、数字、下划线组合
    2.不能以数字开头
    3.不能以关键字命名   例如: if  for   as  ...
'''

18.for循环嵌套之打印99乘法表(2分)

‘’’

for i in range(1, 10):
    for j in range(1, i + 1):
        print('%s * %s = %s' % (i, j, i * j), end='   ')
    print()
'''

19.for循环嵌套之打印金字塔(2分)

‘’’

max = 5
for line in range(1, max + 1):

    for i in range(max - line):
        print(' ', end='')

    for j in range(2 * line - 1):
        print('*', end='')
    print()
'''

20.用列表的insert与pop方法模拟队列(2分)

‘’’

list1 = []
list1.insert(0, 1)
list1.insert(1, 2)
list1.insert(2, 3)
list1.insert(3, 4)
print(list1)
for line in range(len(list1)):
    list1.pop(0)
print(list1)
'''

21.用列表的insert与pop方法模拟堆栈(2分)

‘’’

list2 = []
list2.insert(0, 1)
list2.insert(1, 2)
list2.insert(2, 3)
list2.insert(3, 4)
print(list2)
for line in range(len(list2)):
    list2.pop()

print(list2)

‘’’

22——25 略

机试题(20分)

1.猜年龄游戏(2分)

‘’’
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩
如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,
就退出程序
如何猜对了,就直接退出
‘’’

答案:

'''
number = 1
while number < 4:
    egon = 78
    guess_age = input('请猜测Egon今年贵庚?')
    guess_age = int(guess_age)

    if guess_age == 78:
        print('猜对了')
        break

    elif guess_age > 78:
        print('猜大了')
        number += 1

    else:
        print('猜小了')
        number += 1

‘’’

2.编写登录功能,让用户有三次输错的机会(2分) 其余题: 略

‘’’

1) 初始化三个用户

user_dict = {
    'tank': '123',
    'egon': '321',
    'alex': '456'
}

循环控制,让用户有三次输入的机会

n = 1
while n < 4:  # 1 < 4 --> True
    # 2)让用户输入 账号密码
    username = input('请输入账号:')  # tank
    password = input('请输入密码:')  # 123

    # 3) 判断当前用户 账号密码是否正确
    # 若username in user_dict字典中,证明当前用户存在
    if username in user_dict:  # ---> 这一步 底层其实使用了循环

        pwd = user_dict[username]  # user_dict['tank'] ---> '123'

        # 判断当前用户输入的密码是否正确
        if pwd == password:  # '123' == '123'
            print('登录成功!')

            # 执行到break 就会结束循环
            break

        else:
            print('密码错误!')
            n += 1
    else:
        print('当前用户不存在!')

‘’’

3.注册功能,让用户输入用户名与密码进行注册,注册成功后将用户名与密码存到文件中。(2分)

'''
while True:
    username = input('请输入用户名: ')
    password = input('请输入密码: ')
    re_password = input('请确认密码: ')
    if password == re_password:
        with open('user_info2.txt', 'w', encoding='utf-8') as f:
            f.write('%s:%s' % (username, password) + '\n')
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值