zoukankan      html  css  js  c++  java
  • 小作业

    小作业 3

    5. 尝试实现一个通讯录管理系统

    print('=======通讯录管理系统=======')
    print(' ')
    print('1.增加姓名和手机')
    print('2.删除姓名')
    print('3.修改手机')
    print('4.查询所有用户')
    print('5.根据姓名查找手机号')
    print('6.退出')
    dict1 = {}
    while True:
        c = int(input('请选择要执行的选项:'))
        if c == 1:
            name = input('请输入你的姓名:')
            if name in dict1:
                print('该联系人已存在!')
                continue
            else:
                value= int(input('请输入你的手机:'))
                dict1[name] = value
                print(dict1)
                continue
        if c == 2:
            name = input('请输入要删除的姓名:')
            dict1.pop(name)
            print('已删除')
            print(dict1)
            continue
        if c == 3:
            name=input('请输入要修改手机号的姓名:')
            num = int(input('请输入新的手机号:'))
            dict1[name] = num
            print(dict1[name])
        if c == 4:
            for i,j in dict1.items():
                print(i,j)
        if c == 5:
            name = input('请输入要查找的姓名:')
            if name in dict1:
                print(dict1[name])
            else:
                print('该联系人不存在!')
        if c == 6:
            print('退出')
            break

    小作业 4

    5. 随机产生密码:
    在26个大小写字母和10个数字组成的列表中,随机生成10个8位密码

    import random
    l = []
    for i in range(65,91): # 产生大写字母
        l += chr(i)
    for i in range(97,123): # 产生小写字母
        l += chr(i)
    for i in range(10): # 产生 10 以内的数
        l += str(i)
    #print(l)
    for j in range(10): 
        b=""
        for i in range(8): # 随机产生 8 位密码
            a = random.choice(l)
            b+=a
        print(b)

     小作业 5

    1.通过代码实现如下转换:

    • 二进制转换成十进制:v = “0b1111011”

    • 十进制转换成二进制:v = 18

    • 八进制转换成十进制:v = “011”

    • 十进制转换成八进制:v = 30

    • 十六进制转换成十进制:v = “0x12”

    • 十进制转换成十六进制:v = 87

    print(int(0b1111011)) # 123
    print(bin(18)) # 0b10010
    print(int(0o011)) # 9
    print(oct(30)) # 0o36
    print(int(0x12)) # 18
    print(hex(87)) # 0x57
    # print(type(hex(87))) <class 'str'>

    3.求结果

    v1 = 1 or 3

    v2 = 1 and 3

    v3 = 0 and 2 and 1

    v4 = 0 and 2 or 1

    v5 = 0 and 2 or 1 or 4

    v6 = 0 or False and 1

    print(1 or 3) # 1
    print(1 and 3) # 3
    print(0 and 2 and 1) # 0
    print(0 and 2 or 1) # 1
    print(0 and 2 or 1 or 4) # 1
    print(0 or False and 1) # False

     7.求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )

    print([ i % 2 for i in range(10) ]) # [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
    print((i % 2 for i in range(10))) # <generator object <genexpr> at 0x00000000030002B0>
    a = ( i % 2 for i in range(10))
    print(next(a))
    for i in a:
        print(i,end=' ')
    print() # 生成器:节省空间

    8.求结果:
    a. 1 or 2
    b. 1 and 2
    c. 1 < (2==2)
    d. 1 < 2 == 2

    print(1 or 2) # 1
    print(1 and 2) # 2
    print(1 < (2==2)) # False
    print(1 < 2 == 2) # True 1 < 2 and 2 == 2

    小作业 6

    1.请写出与 10 < cost < 50 等价的表达式

    10 < cost and cost <50

    2.Python3 中,一行可以书写多个语句吗?
    可以 用空格 隔开 l = [i for i in range(100) if i % 2 == 0]
    Python3 中,一个语句可以分成多行书写吗?
    可以 用 换行

    3.我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?

    s = eval(input('小数:'))
    a = int(s+0.5)
    print(a)

    4.请用最快速度说出答案:
    not 1 or 0 and 1 or 3 and 4 or 5 and 6 or7 and 8 and 9
     答案:4

    5.爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;
    若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
    请编程求解该阶梯至少有多少阶?

    for x in range(1000):
        if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and (x%7 ==0):
            print('阶梯数是:', x)
            break

    6.假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?

    x = 1
    y = 2
    z = 3
    x,y,z=z,x,y
    print(x,y,z)

    7.目测以下程序会打印什么?

    while True:
        while True:
            break
            print(1)
        print(2)
        break
    else:
        print(3)
    # 相当于:
    while True:
        print(2)
        break

    8.member.append(['竹林小溪', 'Crazy迷恋']) 和
    member.extend(['竹林小溪', 'Crazy迷恋']) 实现的效果一样吗?

    member = []
    member.append(['竹林小溪', 'Crazy迷恋'])
    print(member)
    member.extend(['竹林小溪', 'Crazy迷恋'])
    print(member)
    # 打印结果
    [['竹林小溪', 'Crazy迷恋']]
    [['竹林小溪', 'Crazy迷恋'], '竹林小溪', 'Crazy迷恋']

    9.请问如何将下边这个列表的'小笨蛋'修改为'小坏蛋'?

    list1 = [1, [1, 2,['小笨蛋']],3, 5, 8, 13, 18]
    list1[1][2] = ['小坏蛋']
    print(list1)

    10.要对一个列表进行顺序排序,请问使用什么方法?

    a = [5,3,2,1,4]
    a.sort()
    print(a)

    11.要对一个列表进行逆序排序,请问使用什么方法?

    b = [6,7,8,9,10]
    b.reverse()
    print(b)

    12.什么情况下你需要使用元组而不是列表?

    当我们希望内容不被轻易改写的时候,我们使用元组(存放固定数据)。  
    当我们需要频繁修改数据,我们使用列表。

    当元组和列表掉下水,你会救谁?

    如果是我,我会救列表,因为列表提供了比元组更丰富的内置方法,这相当大的提高了编程的灵活性。 
    回头来看下元组,元组固然安全,但元组一但创建就无法修改(除非通过新建一个元组来间接修改,但这就带来了消耗),而我们人是经常摇摆不定的,所以元组只有在特殊的情况才用到,平时还是列表用的多。(列表可以增删改,没有元组稳定,会被水冲散,所以先救列表)

    13.x, y, z = 1, 2, 3 请问x, y, z是元组吗

    不是

    x,y,z = 1,2,3
    print(x,y,z)

    所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组。

    14.编写一个进制转换程序(提示,十进制转换二进制可以用bin()这个BIF)

    print('============ 进制转换系统 ============')
    num = int(input('(十进制转其他):'))
    print( '10进制 -> 16进制:', '0x%x' % ( num) )
    print( '10进制 ->  8进制:', '0o%o' % ( num) )
    print( '10进制 ->  2进制:',  bin(num) )
    
    num = input('(二进制转其他):') 
    print('2 -> 8:',oct(int(num,2)))
    print('2 -> 10:',int(num,2))
    print('2 -> 16:',hex(int(num,2)))
    
    num = input('(八进制转其他):')
    print('8 -> 2:',bin(int(num,8)))
    print('8 -> 10:',int(num,8))
    print('8 -> 16:',hex(int(num,8)))
    
    num = input('(十六进制转其他):')
    print('16 -> 2:',bin(int(num,16)))
    print('16 -> 10:',int(num,16))
    print('16 -> 8:',oct(int(num,16)))
    
    print('-------------- 结束 -------------')

    15.我们根据列表、元祖和字符串的共同特点,把它们三统称为什么?有什么共性

    序列
    序列,因为他们有以下共同点:    
    1)都可以通过索引得到每一个元素
    2)默认索引值总是从0开始(可以负数索引)
    3)可以通过分片的方法得到一个范围内的元素的集合
    4)有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)

    18.猜字游戏,随机产生10以内的整型数,可供用户猜,如果猜对,打印“厉害了!500万属于你”,
     如果猜错,如果比随机数大,提示,“大了,再给你一次机会”,如果比随机数小,
     提示“大胆一点”。用户最多有三次机会

    import random
    c = random.randint(1,9)
    change = 2
    for i in range(3):
        s = int(input('请输入一个整型数:'))
        if change == 0:
            print('没机会了')
            break
        if s == c:
            print('厉害了!500万属于你')
            break
        elif s < c:
            print('大胆一点')
        elif s > c:
            print('大了,再给你一次机会')
        change -=1

     19.盒子里有3个红球,3个蓝色球,4个黄球,现刘柱要从盒子里拿出8个球,问有多少种情况

    n = 0
    for x in range(1,4):
        for y in range(1,4):
            for z in range(1,5):
                if x + y + z == 8:
                    n += 1
                    print("红色{},蓝色{},黄色{}".format(x,y,z))
    print("共{}种".format(n))

    20.打印9 9乘法表

    for i in range(1,10):
        for j in range(1,i+1):
            print('{} * {} = {}'.format(j,i,i * j),end = " ")
        print()

    21.猴子得到一堆桃,当天吃了一半之后,又多吃了1个。以后每天,猴子都吃了剩余的一半桃子之后,又多吃一个。

    在第10天,只剩下1个桃子。输出这堆桃最初有多少个。

    p = 1 # 第十天剩下的
    for i in range(1,10):
        p = (p+1) * 2
    print(p)
  • 相关阅读:
    编译原理-第二章 一个简单的语法指导编译器-2.4 语法制导翻译
    编译原理-第二章 一个简单的语法指导编译器-2.3 语法定义
    编译原理-第二章 一个简单的语法指导编译器-2.2 词法分析
    LeetCode 1347. Minimum Number of Steps to Make Two Strings Anagram
    LeetCode 1348. Tweet Counts Per Frequency
    1349. Maximum Students Taking Exam(DP,状态压缩)
    LeetCode 1345. Jump Game IV(BFS)
    LeetCode 212. Word Search II
    LeetCode 188. Best Time to Buy and Sell Stock IV (动态规划)
    LeetCode 187. Repeated DNA Sequences(位运算,hash)
  • 原文地址:https://www.cnblogs.com/wt1103/p/10090694.html
Copyright © 2011-2022 走看看