>>> l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] >>> l2=['Sun','Mon','Tue','Thu','Sat'] >>> l3 = [] >>> for i in l1: >>> if i notin l2: >>> l3.append(i)
>>> namelist=['stu1','stu2','stu3','stu4','stu5','stu6','stu7'] >>> removelist=['stu3','stu7','stu9'] >>> for i in removelist: >>> if i in namelist: >>> namelist.remove(i) >>> print(namelist)
实例5: 给指定的一个列表加编号,使用enumerate加编号.
>>> temp=["手机","电脑","玩具"] >>> for (x,y) inenumerate(temp): print(x,y)
0 手机 1 电脑 2 玩具
小总结: 实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序.
#!/usr/bin/env python # -*- coding:utf-8 -*-
age = 22 count = 0
for i inrange(10): if count < 3: a = int(input("请输入一个猜测的数:")) if a == age: print("恭喜你,答对了") break elif a > age: print("你猜的数字大了") else: print("你猜的数字小了") else: b = input("这都猜不对,你继续玩吗?(yes or not):") if b == 'yes': count = 0 continue else: print("Bye!下次再玩")
count += 1
## 跳过执行与跳出语句
pass语句: pass是为了保持程序结构的完整性,该语句不做任何事情,一般用做占位语句.
>>> for ch in"LyShark": ... if ch == "h": ... pass ... print("这里执行了pass语句") ... print("字符:",ch) ... #--输出结果------------------------- 字符: L 字符: y 字符: S 这里执行了pass语句 字符: h 字符: a 字符: r 字符: k
break语句: break语句用来终止循环语句,即使循环没有结束任然要执行.
>>> for ch in"LyShark": ... if ch == "a": ... break ... print("字符:",ch) ... #--输出结果------------------------- 字符: L 字符: y 字符: S 字符: h
list= [11,22,33,44,55,66,77,88,99] bignum=[] smallnum=[] dir={} for num inlist: if num>66: bignum.append(num) if num<66: smallnum.append(num) else: pass dir['k1']=bignum dir['k2']=smallnum print(dir)
实现元素查找: 查找元素,移动空格,并查找以a或A开头,并且以c结尾的所有元素.
li = ["alec", " aric", "Alex", "Tony", "rain"] tu = ("alec", " aric", "Alex", "Tony", "rain") dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} for i in li: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print(i) for i in tu: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print(i) for i in dic.values(): if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print (i)
实现商品输出: 输出商品列表,用户输入序号,显示用户选中的商品.
#方法一 l1=[1,2,3,4] l2=["手机", "电脑", '鼠标垫', '游艇'] d=dict(zip(l1,l2)) print(d) num=input("请输入商品编号:") print("你选择的商品为 %s" %d[int(num)]) #方法二 li = ["手机", "电脑", '鼠标垫', '游艇'] for k, i inenumerate(li): print(k,i) k=input("请输入商品编号:") print("你选择的商品为 %s" % li[int(k)])
# 程序的开头,模拟C语言写法. if __name__ == '__main__': main()
实现三级菜单: 实现用户交互,显示省市县三级联动的选择.
dic = { "河北": { "石家庄": ["鹿泉", "藁城", "元氏"], "邯郸": ["永年", "涉县", "磁县"], }, "湖南": { "长沙":['a','b','c'], "株洲":['d','e','f'] }, "湖北": { "武汉":['g','h','i'], "黄石":['j','k','l'] } } for k in dic.keys(): print(k) flag=True while flag: n=input("请输入你所在省:") for k in dic.keys(): if n in dic.keys(): if k == n: for i in dic[n].keys(): print(i) w = input("请输入你所在的城市:") for i in dic[n].keys(): if w in dic[n].keys(): if i == w: for k in dic[n][w]: print(k) s=input("请输入你所在的县:") for j in dic[n][w]: if s in dic[n][w]: if j==s: print("你所在的位置是:%s省%s市%s县" % (n,w,s)) flag = False break else: print('不存在,请重新输入') break else: print('不存在,请重新输入') break else: print('不存在,请重新输入') break
product = [ ("iphone",5800), ("watch",380), ("bike",800), ("book",120), ("computer",4000) ] shopping_car = [] salary = input("请输入你的金钱: ") if salary.isdigit(): salary = int(salary) whileTrue: for i inenumerate(product): print(i) user_choice = input(">>>或者q:") if user_choice.isdigit(): user_choice = int(user_choice) if user_choice >= 0and user_choice < len(product): p_item = product[user_choice] if salary >= p_item[1]: shopping_car.append(p_item[0]) salary -= p_item[1] print("你购买了\033[32m%s\033[0m,你的余额剩余\033[31m%s\033[0m" % (p_item[0], salary)) else: print("\033[31m你的余额不足\033[0m") else: print("你输入的项目[%s]不存在,请重新输入" % user_choice) elif user_choice == 'q': print("你购买了这些商品:".center(30,"-")) for i in shopping_car: print("\033[32m%s\033[0m" %i) print("\033[31m余额%s\033[0m" %salary) exit() else: print("你输入的[%s]不存在" % user_choice) else: print("你输入的金额不正确!请重新输入金额!")
## 实例小总结(提高技巧)
题目(1): 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4,组成所有的排列后再去掉不满足条件的排列.
>>> for i inrange(1,5): ... for j inrange(1,5): ... for k inrange(1,5): ... if(i!=k) and (i!=j) and(j!=k): ... print(i,j,k) ... #--输出结果------------------------- 123 124 132 134 142 143 213 214
f1 = 1 f2 = 1 for i inrange(1,22): print('%12ld %12ld'%(f1,f2)) if (i % 3) == 0: print("") f1 = f1 + f2 f2 = f1 + f2
题目(9): 判断101-200之间有多少个素数,并输出所有素数.
程序分析:判断素数的方法,用一个数分别去除2,如果能被整除,则表明此数不是素数,反之是素数.
import os from math import sqrt from sys import stdout
h=0 leap=1
for m inrange(101,201): k = int(sqrt(m + 1)) for i inrange(2,k + 1): if m % i == 0: leap = 0 break if leap == 1: print("%-4d"%m) h += 1 if h % 10 == 0: print("") leap = 1 print('The total is %d' %h)
题目(10): 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数.
import os import string
strs=input("请输入一个字符串:")
letters=0 space=0 digit=0 others=0
for x inrange(len(strs)): ch=strs[x] if ch.isalpha(): letters+=1 elif ch.isspace(): space+=1 elif ch.isdigit(): digit+=1 else: others+=1
username=data[0] password=data[1] for i inrange(3): if x==username.strip() and y==password.strip(): print("登陆成功") break else: data=fp.readline().split(":") username=data[0] password=data[1] continue fp.close()