python之道06

1,使⽤循环打印以结果:

*
***
*****
*******
*********

答案:

方法一:
for i in range(10):
    if i % 2 == 1:
        print(i*'*')
'''
输出结果
*
***
*****
*******
*********
'''
方法二:
for i in range(1,10,2):
   print(i*'*')

2,使用while循环打印以下结果:

**********
*********
********
*******
******
*****
****
***
**
*

答案:

for i in range(10,0,-1):
    print(i*'*')

3,写代码实现

v1 = {"alex","wusir","taibai"}
v2 = []

循环让用户输入,如果用户输入的内容在v1中存在,就添加到v2中,如果v1中不存在就添加的v1中,用户输入Q退出程序

答案:

v1 = {"alex","wusir","taibai"}
v2 = []
while 1:
    enter = input('>>> ')

    if enter in v1:
        v2.append(enter)
    elif enter.upper() == 'Q':
        break
    else:
        v1.add(enter)
print(v1,v2)

# 讲解
v1 = {"alex","wusir","taibai"}
v2 = []
while 1:
    my_input = input('>>>')
    if my_input.upper() == 'Q': # 最好将q写到第一行,注意需要打印
        break
    elif my_input in v1:
        v2.append(my_input)
    else:
        v1.add(my_input)
print(v1)
print(v2)

4.判断以下值那个能做字典的key ?那个能做集合的元素?

  1. -1
  2. ""
  3. None
  4. [1,2]
  5. []
  6. (1,2,3)
  7. ("1")
  8. (1,)

答案:

可以做字典的key:
1 2 3 6 7 8 
可以做集合的元素:
1 2 3 6 7 8

5.is 和 == 的区别是什么?

答案:

is用来判断内存地址是否相同
==用来判断等号两边的值是否相同

6.id的作用是什么?

答案:

id 用来获取内存地址
格式:
l1 = [1,2,3]  
print(id(l1))
'''
输出结果
4487978824
'''

7.看代码写结果并解释原因(以下看代码写结果,一定要自己先思考.在验证!)

v1 = {'k1':'v1','k2':[1,2,3]}

v2 = {'k1':'v1','k2':[1,2,3]}


result1 = v1 == v2 

result2 = v1 is v2 

print(result1)

print(result2)

答案:

v1 = {'k1':'v1','k2':[1,2,3]}

v2 = {'k1':'v1','k2':[1,2,3]}

 
result1 = v1 == v2 # 值相同内存地址不一定相同 

result2 = v1 is v2 # 判断v1和v2的内存地址是否相同,内存地址相同值一定相同

print(result1)

print(result2)
结果:
True
False

8.看代码写结果并解释原因

v1 = {'k1':'v1','k2':[1,2,3]}
v2 = v1
v1['k1'] = 'wupeiqi' 
print(v2["k1"] + v1["k1"])

答案:

v1 = {'k1':'v1','k2':[1,2,3]}
v2 = v1 # 赋值 指向同一个内存地址
v1['k1'] = 'wupeiqi'  # v1的值发生改变,v2也跟着改变 此时v1 = {'k1':'wupeiqi','k2':[1,2,3]} = v2
print(v2["k1"] + v1["k1"]) #print(wupeiqi+wupeiqi)
wupeiqiwupeiqi

9.看代码写结果并解释原因

v1 = '人生苦短,我用Python'

v2 = [1,2,3,4,v1]

v1 = "人生苦短,用毛线Python"

print(v2)

答案:

v1 = '人生苦短,我用Python'

v2 = [1,2,3,4,v1] # v2中的v1实际指向的是v1的值而不是v1这个变量

v1 = "人生苦短,用毛线Python" # v1的指向发生变化,但是v2还是指向原先的内存地址,代码从上到下执行

print(v2)
结果:
[1,2,3,4,'人生苦短,我用Python']

10.看代码写结果,并解释原因

info = [1,2,3]
userinfo = [info,info,info,info,info]
info[0] = '不仅多,还特么难呢'
print(info,userinfo)

答案:

原因:
info = [1,2,3]
userinfo = [info,info,info,info,info] # 相当于浅拷贝,只拷贝了第一层,第二层发生改变,都变
info[0] = '不仅多,还特么难呢'
print(info,userinfo)
结果:
['不仅多,还特么难呢',2,3]
[['不仅多,还特么难呢',2,3],['不仅多,还特么难呢',2,3],['不仅多,还特么难呢',2,3]]

11.看代码写结果,并解释原因

dic1 = {"k1":5,"k2":10}
dic2 = dic1.copy()
dic2["k1"] = 1
print(dic1["k1"] + dic2["k1"])

答案:

原因:
dic1 = {"k1":5,"k2":10}
dic2 = dic1.copy() # 浅拷贝,拷贝了第一层,dic1中没有第二层,所以其中一个字典发生改变不影响第二字典,dic2 = {"k1":5,"k2":10}
dic2["k1"] = 1 # dic2 = {"k1":1,"k2":10}
print(dic1["k1"] + dic2["k1"])
结果:6

12.念数字给出一个字典. 在字典中标识出每个数字的发音. 包括相关符号. 然后由用户输入一个数字. 让程序读出相对应的发音(单纯的打印即可,不考虑个十百)

例如: 7.5 输出: qi_dian_wu

dic = {
'0':'ling',
'1':'yi',
'2':'er',
'3':'san',
'4':'si',
'5':'wu',
'6':'liu',
'7':'qi',
'8':'ba',
'9':'jiu',
'.':'dian',
}

答案:

num = input('请输入一个数字: ')
s = ''
for i in num:
    s = s + dic[i] + '_'
print(s[:-1])
'''
输出结果
输入:7.5
输出:qi_dian_wu
'''

13.敲七游戏.从1开始数数.遇到7或者7的倍数要在桌上敲⼀下.编程来完成敲七.给出⼀个任意的数字n. 从1开始数. 数到n结束.把每个数字都放在列表中, 在数的过程中出现7或者7的倍数(不包含类似于17,27,这种数).则向列表中添加⼀个'咣'

例如, 输⼊10 # lst = [1, 2, 3, 4, 5, 6, '咣', 8, 9, 10]

答案:

lst = []
while 1:
    num = int(input('>>>'))
    for i in range(1,num+1):
        if i % 7 == 0:
            lst.append('咣')
        else:
            lst.append(i)
    print(lst)
'''
输出结果
[1, 2, 3, 4, 5, 6, '咣', 8, 9, 10]
'''
posted @ 2019-06-12 09:48  爱咋闹  阅读(265)  评论(0编辑  收藏  举报