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

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

print("===============电话簿================")
 print("=====================================")
 print("查询所有联系人请输入:all")
 print("查询指定用户请输入指定联系人姓名")
 print("删除联系人请输入:del")
 print("修改联系人请输入:rev")
 print("增添联系人请输入:add")
 print("退出请输入:q")
 print("=====================================")
 d1={"张三":"1342111111","李四":"13422222222"}
 while True:
     s=input("请输入指令:")
     if s=="all":
         print(d1)
         continue
     if s=="del":
         n=input("请输入要删除的联系人姓名:")
         d1.pop(n)
         print(d1)
         continue
     if s=="add":
         name=input("请输入新联系人姓名:")
         tel=input("请输入新联系人电话:")
         d1[name]= tel
         print(d1)
         continue
     if s=="rev":
         rname=input("请输入要修改的联系人姓名:")
         rtel=input("请输入要修改的联系人电话:")
         d1[rname]=rtel
         print(d1)
         continue
     for k in d1.keys():
         if s==k:
             print(d1[s])
         continue
     if s=="q":
         break

2. 还记得预科阶段我们写的小日历吗?再次尝试实现

 已知1990.1.1是星期一,尝试计算用户输入的任意年/月对应的小日历,要求用户输入年必须大于1990

 打印日历的格式参考linux命令,cal 月 年

print("==========万年历===========")
 d1= [1,3,5,7,8,10,12]
 d2= [4,6,9,11]
 y,m= eval(input("请输入年份和月份:"))
 s=0
 for i in range(1990, y):
     s += (365+(1 if (i % 4 == 0 and i % 100 != 0 or i % 400 == 0) else 0))
 for n in range(1, m):
     if n in d1:
         s+= 31
     elif n in d2:
         s+= 30
     else:
         s+= (29 if y % 4 == 0 and y % 100 != 0 or y % 400 == 0 else 28)
 s+= 1
 wd = s % 7
 if m in d1:
     mt = 31
 elif m in d2:
     mt = 30
 else:
     if y % 4 == 0 and y % 100 != 0 or y % 400 == 0:
         mt = 29
     else:
         mt = 28
 ms = "一二三四五六七八九十"
 if m == 11:
     ms = "十一"
 elif m == 12:
     ms = "十二"
 else:
     ms = ms[m-1]
 print("{:>7}月 {}".format(ms, y))
 print(end='') # 关闭属性
 print("日 一 二 三 四 五 六")
 print(end='') # 关闭属性
 print("   "*wd, end="")
 for d in range(1, mt+1):
     print("{:>2}".format(d), end=" " if (wd+d)%7 else "\n")
 print()

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

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

(2)十进制转换成二进制:v = 18

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

(4)十进制转换成八进制:v = 30

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

(6)十进制转换成十六进制:v = 87

(1)v= "0b1111011"
v1=int("1111011",2)
print(v1)
123

(2)v=18
v1=bin(v)
print(v1)
ob10010

(3)v="011"
v1=int(v,8)
print(v1)
9
(4)v=30
v1=oct(v)
print(v1)
0o36
(5)v="0x12"
v1=int(v,16)
print(v1)
18
(6)v=87
v1=hex(v)
print(v1)
0x57

4.求结果

v1 = 1 or 3

v1=1

v2 = 1 and 3

v2=3

v3 = 0 and 2 and 1

v3=1

v4 = 0 and 2 or 1

v4=1

v5 = 0 and 2 or 1 or 4

v5=1

v6 = 0 or Flase and 1

v6=0

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=0

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

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

10<cost and cost<50


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

可以;

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

可以

 

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

s=float(input("请输入一个非整型数:"))
a=0.5
print(int(s+a))

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

得4

 

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

for n in range(10000):
     if n%2==1 and n%3==2 and n%5==4 and n%6==5 and n%7==0:
         print(n)
         break

 

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

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

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

while True:

while True:

break

print(1)

print(2)

break

else:

print(3)

打印:2


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

答:不一样,前者会将()中内容整体加入进去,后者会将括号中内容逐个加入进去。

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

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

 

 

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

l=[1,2,5,8,3,7,4,6,0]
l.sort()


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

l=[1,2,5,8,3,7,4,6,0]
l.sort()
l.reverse()
print(l)


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

答:当需要储存不可变的值时使用元组,救元组。

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

不是

 

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

print("=======进制转换器=======")
 print("转十进制请输入:10")
 print("转八进制请输入:8")
 print("转十六进制请输入16")
 print("转二进制请输入:2")
 print("退出:0,0")
 print("========================")
 while True:
     s,y=eval(input("请输入操作指令和想要转换数值的进制:"))
     if s==10: 
         n=str(input("请输入数值:"))
         v=int(n,y)
         print(v)
            continue
     if s==8:
         n=str(input("请输入数值:"))
         v=oct(int(n,y))
         print(v)
         continue
     if s==16:
         n=str(input("请输入数值:"))
         v=hex(int(n,y))
         print(v)
         continue
     if s==2:
         n=str(input("请输入数值:"))
         v=bin(int(n,y))
         print(v)
         continue
     if s==0 and y==0:
         break

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

答:统称序列,都可以被索引,可以被切片。


23.请问这个函数有多少个参数?

def MyFun((x,y), (a, b)):

return x * y - a * b

答:2个

 

24.编写一个函数满足以下功能:

计算打印所有参数的和乘以基数(base=3)的结果

def ch(s):
     n=0
     for i in s:
         n=n+i
     return n*3
 s=[1,4,6,8]
 print(s)
 print(ch(s))

 

 

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

import random
 print("猜猜这是什么数?")
 n=random.randrange(11)
 for i in range(3):
     s=int(input("请输入你的答案:"))
     if n==s:
         print("厉害了!500万属于你!")
         break
     elif s>n and i<2:
         print("大了,再给你一次机会!")
     elif s<n and i<2:
         print("大胆一点!")
     else:
         print("抱歉,游戏结束!")

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

n=0
 for r in range(1,4):
     for b in range(1,4):
         for y in range(1,5):
             if r+b+y==8:
                 n+=1
 print("共有{}种情况".format(n))

27.打印9 9乘法表

print("=======九九乘法表=======")
 for a in range(1, 10):
     for b in range(1, a+1):
         print("{}*{}={:<2}".format(b, a, b*a), end=" ")
     print()

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

n=1
 for i in range(9):
     n=(n+1)*2
 print("最初有{}个桃".format(n))