python 系列(4) 分支循环和深浅拷贝

Posted on Posted in python

## 分支循环

> 语法

  1. if a == 1 and b == 2:  
  2.         print 'ok'  
  3. else:  
  4.         print 'no'  
  5.   
  6. if a == 1:  
  7.         print 1  
  8. elif a == 2:  
  9.         print 2  

> eg:

  1. #! /usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. # vim:fenc=utf-8  
  4. username = 'admin'  
  5. user_input = raw_input('Enter your name: ') # 3版本为 input  
  6. if user_input == username:  
  7.     print('welcome %s' % user_input)  
  8. else:  
  9.     print('is wrong')  

> 三目/元运算符

  1. x, y = 10, 20  
  2. smallValue = x if x<y else y  
  3.   
  4. smallValue = (x < b or b)  
  5. smallvalue = (x < x and x or y)  

> while 循环

  1. i = 1  
  2. sum = 0  
  3. while i <= 100:  
  4.         sum += i  

> 99乘法表

  1. i = 1  
  2. while i < 10:  
  3.     j = 1  
  4.     while j <= i:  
  5.         print("%s X %s = %s" % (j,i,i*j)),  
  6.         j += 1  
  7.     print  
  8.     i += 1  

> for 循环

> 主要用来访问序列和可迭代的数据对象

> 序列:list/str/tuple

> 语法:

  1. for i in str:  
  2.         print i  
  3.   
  4.         list1 = ['a','b','c']  
  5.         for i in list1:  
  6.             print i  
  7.         d = {'a':1,'b':2}  
  8.         for k in d:  
  9.             print k  
  10.         for v in d.values():  
  11.             print v  
  12.         for k,v in d.items():  
  13.             print k,v  

## 深浅拷贝

  1. >>> mylist = [1,2,3] #复制运算,原来的改变,都改变  
  2. >>> mylist1 = mylist  
  3. >>> id(mylist)  
  4. 4415885824  
  5. >>> id(mylist1)  
  6. 4415885824  
  7. >>> mylist1[0] = 'a'  
  8. >>> mylist1  
  9. ['a', 2, 3]  
  10. >>> mylist  
  11. ['a', 2, 3]  
  12. >>> mylist2 = mylist[:] #列表冒号赋值,原来的改变,新的不变  
  13. >>> mylist2  
  14. ['a', 2, 3]  
  15. >>> mylist[1] = 'b'  
  16. >>> mylist  
  17. ['a', 'b', 3]  
  18. >>> mylist2  
  19. ['a', 2, 3]  
  20. >>> id(mylist)  
  21. 4415885824  
  22. >>> id(mylist2)  
  23. 4416059296  
  24.   
  25. >>> help(copycopy.copycopy#浅拷贝 copy,原来的改变,新的不变  
  26. >>> mylist3 = copycopy.copycopy(mylist)  
  27. >>> mylist3  
  28. ['a', 'b', 3]  
  29. >>> mylist  
  30. ['a', 'b', 3]  
  31. >>> mylist[2] = 'c'  
  32. >>> mylist  
  33. ['a', 'b', 'c']  
  34. >>> mylist3  
  35. ['a', 'b', 3]  
  36.   
  37. >>> mylist.append(['abc',1])  
  38. >>> mylist #浅拷贝,第一层。深拷贝,都拷贝  
  39. ['a', 'b', 'c', ['abc', 1]]  
  40. >>> mylist4 = copycopy.copycopy(mylist) #浅拷贝  
  41. >>> mylist5 = copycopy.deepcopy(mylist) #深拷贝  
  42. >>> mylist4  
  43. ['a', 'b', 'c', ['abc', 1]]  
  44. >>> mylist5  
  45. ['a', 'b', 'c', ['abc', 1]]  
  46. >>> mylist  
  47. ['a', 'b', 'c', ['abc', 1]]  
  48. >>> mylist[3][1] = 'bcd'  
  49. >>> mylist  
  50. ['a', 'b', 'c', ['abc', 'bcd']]  
  51. >>> mylist4 #浅拷贝改变  
  52. ['a', 'b', 'c', ['abc', 'bcd']]  
  53. >>> mylist5 #深拷贝不变  
  54. ['a', 'b', 'c', ['abc', 1]]  

## 饮料机

> 循环判断举例

  1. # coding=utf-8  
  2. loop = True  
  3. money = 0  
  4. while loop:  
  5.     x = raw_input('please insert your money,press "q"Key to end!')  #用户输入钱数  
  6.     if x == 'q':  #输入q的条件下进行判断  
  7.         if money == 0: #如果输入的钱数为0,提示他没有投币  
  8.             print "Error:you haven't insert money,please insert your money to buy the drink"  
  9.         else#提示他将转入购买饮料的操作界面,投币结束,结束循环  
  10.             print 'Tip: You have finished coin,the next step is the operation interface for you to buy the drink '  
  11.             loop = False   
  12.     else:  # 投币功能,每次投币后都显示本次投币金额和总投币金额  
  13.         x = int(x)  
  14.         money += x  
  15.         print 'Tip:this coin is ', x, 'yuan,all your balance is ', money, 'yuan'  
  16. drinklist = {  
  17.     'Coca Cola': 2.5,  
  18.     'milky tea': 1.5,  
  19.     'Orange juice': 3,  
  20.     'JDB': 4  
  21. }  
  22. #输出饮料明细  
  23. i=0  
  24. print 'please choose the drink you want to buy:'  
  25. for x in drinklist:  
  26.     i+=1  
  27.     print 'No.',i,'drink ',x,'price',drinklist[x]  
  28. print  
  29. #顾客选择饮料  
  30. loop = True  
  31. while loop:  
  32.     drinkNo = raw_input('please input the drink No. you will buy,press "q" to end:')  
  33.     if drinkNo=='q': #输入q结束饮料选择  
  34.         loop = False  
  35.     else# 选择饮料的流程  
  36.         drinkNo = int(drinkNo) # 转换数据类型  
  37.         if drinkNo >= 1 and drinkNo <= len(drinklist):  #如果顾客输出编码在饮料编码范围内  
  38.             i = 0  
  39.             for x in drinklist: #查找顾客选择的饮料  
  40.                 i += 1  
  41.                 if i == drinkNo:#查找到顾客的饮料后,判断顾客的余额是否充足  
  42.                     if money >= drinklist[x]:  
  43.                         money -= drinklist[x] #饮料选择后,对顾客的余额进行相应扣除  
  44.                         print 'the drink you choose:', x, ', the price is', drinklist[x], ',your balance is:', money  
  45.                         if money == 0: #选择饮料后,判断顾客余额是否为0,为零则循环结束  
  46.                             loop = False  
  47.                     else#余额不足则提示顾客余额不足  
  48.                         print 'Remind:your balance is not enough for the drink'  
  49.         else#顾客输出的编码不在系统提供的列表内,则提示选择的饮料不存在  
  50.             print 'Remind: the drink No. is not exist!'  
  51. if money>0: #顾客结束饮料购买,判断顾客余额是否为0,不为0则退换顾客余额,欢迎下次光临  
  52.     print 'Remind:we will return your balance ',money,'yuan, welcome to come again'  
  53. else#顾客余额为0则提示余额为0,欢迎下次光临  
  54.     print 'Your balance has run out, welcome to come again !'  

One thought on “python 系列(4) 分支循环和深浅拷贝

  1. Firefox 34.0 Firefox 34.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0

    What i do not realize is in reality how you’re not actually
    a lot more neatly-liked than you might be
    now. You are so intelligent. You understand therefore significantly when it comes to this subject, made me personally consider it from a
    lot of various angles. Its like women and men don’t seem to be fascinated except it’s something to do with Lady gaga!
    Your individual stuffs great. All the time take care of it up!

Leave a Reply

Your email address will not be published. Required fields are marked *

nineteen − eight =