20181207作业-郭恩赐

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

=======通讯录管理系统=======
1.增加姓名和手机
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出
============================

代码如下

 

tab = ('通讯录管理系统','增加姓名和手机号','删除姓名','修改手机','查询所有用户','根据姓名查找手机','退出')
dic = {'张三':'6350555','李四':'6666666','王二':'65656565'}
while 1:
    print('{:=^20}'.format(tab[0]))
    for i in range(1,len(tab)):
        print('{},{:<20}'.format(i,tab[i]))
    print("{:=^28}".format('='))

    fc = int(input('请输入序号选择功能:'))
    #增加姓名和手机
    while fc==1:
        new_name = input('请输入新的姓名:')
        if new_name in dic:
            print('用户已存在,请重新输入:')
        else:
            new_num = input('请输入%s的手机号码'%new_name)
            dic[new_name] = new_num
            print(dic)
            print('增加完成!')
            fc = int(input('继续增加请输入1,返回主界面输入0,退出请输入6:'))
    #删除姓名
    while fc==2:
        del_name = input('请输入要删除的姓名:')
        if del_name not in dic:
            print('通讯录中无此姓名,请重新输入:')
        else:
            dic.pop(del_name)
            print('删除完成')
            fc = int(input('继续删除请输入2,返回主界面输入0,退出请输入6:'))
    #修改手机号
    while fc==3:
        change_name = input('请输入要手机号的用户:')                                                                                                                                                   
        if change_name in dic:
            change_num = input('请输入的%s新号码:'%change_name)
            dic[change_name] = change_num
            print('修改完成\n姓名:{} 号码:{}'.format(change_name,dic[change_name]))
            fc = int(input('继续修改请输入3,返回主界面输入0,退出请输入6:'))
        else:
            print('通讯录中无此用户,请重新输入:')
    #查找所有用户
    while fc==4:
        print('所有用户如下:')
        print(dic)
        for u in dic.keys():
            print(u)
        fc = int(input('继续请输入4,返回主界面输入0,退出请输入6:'))
    #根据姓名查找手机号
    while fc==5:
        search_name= input('请输入要查找的用户姓名:')
        if search_name in dic:
            print('查找完成\n姓名:{} 号码:{}'.format(search_name,dic[search_name]))
            fc = int(input('继续查询请输入5,返回主界面输入0,退出请输入6:'))
        else:
            print('无此用户名,请确认后重新输入!')
    #退出
    if fc==6:
        break

 

 

5. 随机产生密码:

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

答:

import random
l= []
for s in range(26):
    l.append(chr(ord('a')+s))
for s in range(26):
    l.append(chr(ord('A')+s))
for s in range(10):
    l.append(chr(ord('0')+s))  
ls = []
for x in range (10): 
    s=''
    for y in range(8):
        s+= random.choice(l)
    ls.append(s)
print(l) 
print(ls) 

 

 

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

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

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

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

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

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

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

 答:

  

#二进制转十进制
v= '0b1111011'
v= int(v,2)
#十进制转二进制
v = 19
v = bin(v)
#八进制转十进制
v = '0o11'
v = int(v,8)
#十进制转八进制
v = 39
v = oct(v)
#十六进制转十进制
v = '0xab'
v  = int(v)
#十进制转十六进制
v = 255
v= hex(v)

 

 

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 Flase and 1

 

答:

v1 = 1

v2 = 3

v3 = 0

v4 = 1

v5 = 1 

v6 = False 

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

答:

a得到的结果是:[0,1,0,1,0,1,0,1,0,1]

b得到的结果是一个生成器,用一下代码可以将生成器里的所有元素打印。

for j in (i%2 for i in range(10)):
    print(j,end=" ")
print()

 

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

 答:

  a:  1

  b :  2 

  c:    False

  d:  True

 

小作业6

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

cost >10 and cost<50

 


2.Python3 中,一行可以书写多个语句吗?
Python3 中,一个语句可以分成多行书写吗?

 答:

  python3 中,一行只能输入一条语句

  一条语句可以分成多行书写,在行末加上换行符‘\’即可

 

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

 

new_i = int(i+0.5)

 

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

   答:not优先级高于and高于or

  结果是4 

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

 

i = 1
while i:
    i+=1
    if i%2 ==1 and i%3 ==2 and i%5 ==4 and i%6 ==5 and i%7==0:
        print(i)
        break

 

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

a = x 
x = y 
y = z
z = a 

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

while True:
    while True:
        break

        print(1)
    print(2)
    break

elseprint(3)            

答:会打印出 2

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

答:

不一样,member.append(['竹林小溪', 'Crazy迷恋'])是把圆括号中的列表作为一个元素追加到member,

  

In [8]: member = [1,2,3,4]                                                      

In [9]: member.append(['竹林小溪', 'Crazy迷恋'])                                

In [10]: member                                                                 
Out[10]: [1, 2, 3, 4, ['竹林小溪', 'Crazy迷恋']]

member.extend(['竹林小溪', 'Crazy迷恋'])  是把圆括号中的列表作为列表合并到member

In [5]: member = [1,2,3,4]                                                      

In [6]: member.extend(['竹林小溪', 'Crazy迷恋'])                                

In [7]: member                                                                  
Out[7]: [1, 2, 3, 4, '竹林小溪', 'Crazy迷恋']

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

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

 答:

list[1][2][0] = '小坏蛋'

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

  答:

  

ls = [1,2,3,5,6,1,6]
ls.sort()
print(ls)

 

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

 答:

  

ls = [1,2,3,5,6,1,6]
ls.sort(reverse= True)
print(ls)

 

12.什么情况下你需要使用元组而不是列表?
  当元组和列表掉下水,你会救谁?

 答:

  当一个列表定义完成后不需要做任何改变时,使用元祖比较好

比如定义一年中有三十一天的月份,或有三十天的月份。使用元祖较好。

  救列表吧,还是比较喜欢会可以想灵活多变的。

 

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

答:

 是元组。

 

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

t = ('','b','o','h')
x = input('请选要输入的进制数:\n 默认输入十进制,b为二进制,0 为八进制\
,h为十六进制:')
if x ==t[1]:
    num=input('请输入一个数:')

    #输入的是二进制数
    print('{}转为十进制是 {}'.format(num,int(num,2)))
    print('{}转为八进制是 {}'.format(num,oct(int(num,2))))
    print('{}转为十六进制是 {}'.format(num,hex(int(num,2))))
elif x ==t[2]:

    num=input('请输入一个数:')
    #输入的是八进制数:
    print('{}转为十进制是 {}'.format(num,int(num,8)))
    print('{}转为二进制是 {}'.format(num,bin(int(num,8))))
    print('{}转为十六进制是 {}'.format(num,hex(int(num,8))))
elif x == t[0]:
    #输入的是十进制
    num=input('请输入一个数:')
    print('{}转为二进制是 {}'.format(num,bin(int(num,10))))
    print('{}转为八进制是 {}'.format(num,oct(int(num,10))))
    print('{}转为十六进制是 {}'.format(num,hex(int(num,10))))
else:
    #输入的是十六进制数:
    num=input('请输入一个数:')
    print('{}转为二进制是 {}'.format(num,bin(int(num,16))))
    print('{}转为八进制是 {}'.format(num,oct(int(num,16))))
    print('{}转为十进制是 {}'.format(num,int(num,16)))

 

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

 答:统称为   序列类型

都可以索引,切片,都可以使用的成员运算符有:in  ,not in

都可以用的算数运算符有 +    *

都可用的函数有: max()   min()  len()    .index()   .count()

 

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

比随机数小,提示“大胆一点”。用户最多有三次机会

答:

import random
x = random.randint(0,10)

for i in range(3):
    num = int(input('请猜下这个数:'))
    if  num == x:
        print('厉害了!五百万数于你')
        break
    elif num > x:
        print('大了,再给你一次机会')
    else:
        print('大胆一点')
else:
    print('游戏结束')

 

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

red = 3
blue = 3
yellow = 4
for r in range(red+1):
    for b in range(blue+1):
        for y in range(yellow+1):
            if r+b+y == 8:
                print('{}个红球,{}个蓝球,{}个黄球。'.format(r,b,y))

 

20.打印9 9乘法表

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

 

21.猴子得到一堆桃,当天吃了一半之后,又多吃了1个。以后每天,猴子都吃了剩余的一半桃子之后,又多吃一个。在第10天,只剩下1个桃子。输出这堆桃最初有多少个

y = 1
for i in range(10):
    y = (y+1)*2
print('这堆桃子最初有%d个'%y)

 

 

总结,

数据类型,相同,不同。

附加文件:

 

不懂的点。需要重新讲的只知识点,,交给组长:马宝华

 

转载于:https://www.cnblogs.com/gec258/p/10083847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值