Python作业

1使用while 循环输入1,2,3,4,5,6,,8,9,10

count = 0
while count<10:
    count+=1
    if count ==7:
        continue
    print(count)

  

count = 0
while count<10:
    count+=1
    if count ==7:
       pass
    else:
        print(count) 

2.求1——100的所有数的和

sum =0
count = 0
while count<=100:
    count+=1
    sum = sum +count

print(sum)

3.输出1——100的奇数

count = 0
while count<100:
    count+=1
    if count %2 == 1:
        print(count)
    continue

4.求100以所有奇数相加

count = 0
sum = 0
while count<100:
    count+=1
    if count %2 == 1:
        sum = sum +count

print(sum) 

5.求1-2+3-4+5......+99的所有数的和

count = 0
sum = 0
while count<99:
    count+=1
    if count %2 == 0:
       sum = sum -count
    else:
        sum = sum +count

print(sum)

6.简单的用户登陆(三次机会重试)

i =0
while i<3:
    user_name = input("请输入您的用户名")
    password = int(input("请输入您的密码"))
    if user_name == 'zzz' and password ==123:
        print("登录成功")
        break
    else:
        print('请重新输入')
    i +=1
    if i ==3:
        print("您的用户已经冻结")
        break  

加强版:

user_name ='zzz'
password = 123
i =0
while i<3:
    user1_name = input("请输入您的用户名")
    password1 = int(input("请输入您的密码"))
    if user1_name == user_name and password1 ==password:
        print("登录成功")
        break
    else:
        print('登录失败,您还有%d此登录的机会'%(2-i))
        if (2-i) ==0:
            result = input("是否还需要继续输入(Yes or NO):")
            if result == 'Yes':
                i = 0
                continue
    i+=1
    if i ==3:
        print("您的用户已经冻结")

else:
    print("欢迎下次光临")

注册

print("请开始您的注册")
id_name = input('请输入您要注册的用户名')
id_password = input('请输入您要注册的密码')
print('恭喜您,注册成功')
with open('123.txt','w+',encoding='utf-8') as f:
    # f.writelines(id_name+ '
')
    # f.writelines(id_password+'
')
    f.write('{}
{}'.format(id_name,id_password))
    f.seek(0)
    # f.read()
    passge_lis = f.readlines()
    # print(passge_lis)
user_name = passge_lis[0].strip()
password = int(passge_lis[1].strip())
print(user_name,password)

  

6 1-2+3-4...............+98-99 除去88 ,把所有的数都相加起来

sum = 0
i = 0
j=-1
while i<99:
    i+=1
    j=-j
    if i ==88:
        j=-j
        continue
    else:
        sum = sum + i*j
print(sum) 
sum = 0
i = 0
j=-1
while i<99:
    i+=1
    if i ==88:
        continue
    else:
        j = -j
        sum = sum + i*j

print(sum)

7. li= [1,2,3,'alex',[2,5,'x'],'asas']  把每一个列表中的元素都遍历出来,包括列表中的列表

li= [1,2,3,'alex',[2,5,'x'],'asas']

for i in li:
    if type(i) == list:
        for u in i:
            print(u)
    else:
        print(i)


for i in range(len(li)):
    if type(li[i]) == list:
        for j in li[i]:
            print(j)
    else:
        print(li[i])

8

lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']
#将列表中的数字变成字符串的时候:直接替换;先删除在添加
lis.remove(3)
lis.insert(1,"100")
# 将列表中的字符串变成数字的时候:直接替换;先删除在添加;或者是先replace 变成字符串后在转化为数字
lis[3][2][1][2]=int(lis[3][2][1][2].replace("1","101"))

print(lis)

9 1查找列表li中的元素,移除每个元素的空格,2并找出以’A’或者’a’开头,并以’c’结尾的所有元素,3并添加到一个新列表中,最后循环打印这个新列表

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']

lis =[]
for i in li:
    s =i.strip()
    if (s.startswith("A") or s.startswith("a"))and s.endswith("c"):
        lis.append(s)

for i in li:
    s =i.strip(' ')
    if s[0].upper() == "A" and s[-1] == "c":
        lis.append(s)
print(lis)

10 # 开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:# 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]# 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;# 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中

li = ["苍老师","东京热","苍老师","波多野结衣"]

conten = input("请输入内容:")
b = []
for i in li :
    if i in conten:
        #n = len(i)
        #conten = conten.replace(i,"*"*n)
     conten = conten.replace(i,"*")     
b.append(conten)
print(b)

 

#错误的版本

li = ["苍老师","东京热","苍老师","波多野结衣"]
conten = input("请输入内容:")
b = []
for i in li :
    if i in conten:
        n = len(i)
        new_data = conten.replace(i,"*"*n) #内容要重新放在循环过程中判断。
        b.append(new_data) #这里添加不能放在在循环体内
    else:
        b.append(conten)
print(b)

10 用一行代码改变a和b的值 

a=1
b=2

a,b = b,a  #类似dict中的k,v
print(a,b)

11. 输入任意的一串字母+数字。计算出数字的个数。注意连在一起的数字为一个整体。例如:35sdsadwdada656ds123sdsadad99  一共有4个数字。

info = input("<<<")  #'sasda6565sdsa797asd1543' ---< '    6565    797   1543'

for i in info:
    if i.isalpha():
        info=info.replace(i," ")
num = info.split()  #'   6565   797   1543' ------> ['6565', '797', '1543']
print(len(num))

12有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

li= [11,22,33,44,55,66,77,88,99,90]
dic ={'k1':[],'k2':[]}

for i in li:
if i>66:
dic['k1'].append(i)
elif i==66:
continue
else:
dic['k2'].append(i)

print(dic)
li= [11,22,33,44,55,66,77,88,99,90]
dic ={}
a=[]
b=[]

for i in li:
    if i>66:
        a.append(i)
    elif i==66:
        continue
    else:
        b.append(i)

dic.setdefault('k1',a)
dic.setdefault('k2',b)
print(dic)  

13

'''
输出商品列表,用户输入序号,显示用户选中的商品
    商品 li = ["手机", "电脑", '鼠标垫', '游艇']
要求:1:页面显示 序号 + 商品名称,如:
      	1 手机
	   	2 电脑
     		 …
     2: 用户输入选择的商品序号,然后打印商品名称
  3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。

'''
li = ["手机", "电脑", '鼠标垫', '游艇']

while 1:

    for i in li:
        index = li.index(i)+1
        print('{}		{}'.format(index,i))  #	 空格 
 换行

    num = input('请输入选择的商品序号:')
    if num.isdigit():
        num = int(num)
        if num >0 and num<= len(li):
            print(li[num-1])
        else:
            print("请输入有效的数字:")
    elif num.upper() == 'Q':
        print('欢迎下一次购物')
        break
    else:
        print('请输入数字')

14 购物车 (有点小问题,不完整)

#购物车

li =[
    {'name':'苹果','price':'10'},
    {'name':'香蕉','price':'20'},
    {'name':'西瓜','price':'30'},
]

shopping_cars = {}
all_money = 0
print('欢迎来到虚拟超市')

while 1:
    for k,j in enumerate(li):
        print('序号:{}	商品名称:{}	商品的价格:{}'.format(k+1,j['name'],j['price']))

    goods_num = input("请输入您要购买的商品的序号:")
    if goods_num.isdigit():
            if int(goods_num)>0  and int(goods_num) <= len(li):
                    print('商品名称:{}	商品的价格:{}'.format(li[int(goods_num)-1]['name'],li[int(goods_num)-1]['price']))
                    goods_digit = input("请输入您所购买的商品的数量")
                    if goods_digit.isdigit():
                        if int(goods_digit)>0:
                            goods_money = int(goods_digit) * int(li[int(goods_num)-1]['price'])
                            all_money = goods_money + all_money
                            print('商品名称:{}	商品的数量:{}	总价钱:{}'.format(li[int(goods_num)-1]['name'],goods_digit,goods_money))
                            if li[int(goods_num)-1]['name'] in shopping_cars:
                                while 1 :
                                    choose = input("请您对您的商品做出改变的序号(0为增加数量;1为减少数量,3为删除商品):")
                                    if choose == '0':
                                        shopping_cars[li[int(goods_num)-1]['name']] = int(shopping_cars[li[int(goods_num)-1]['name']]) + int(goods_digit)
                                        break
                                    elif choose =='1':
                                        shopping_cars[li[int(goods_num) - 1]['name']] = int(shopping_cars[li[int(goods_num) - 1]['name']]) - int(goods_digit)
                                        all_money = all_money -2*goods_money
                                        break
                                    #elif choose == '3':  #有问题
                                        #all_money = all_money -1*goods_money
                                        #del shopping_cars[li[int(goods_num)-1]['name']]
                                        #break
                                    else:
                                        print('请输入有效的序号')
                                        continue
                            else:
                                shopping_cars[li[int(goods_num)-1]['name']]  = goods_digit
                            print('购物车的商品:{}'.format(shopping_cars))
                            go_on = input("是否付款( Y(y) or N(n) ):")
                            if go_on.upper() == 'Y':
                                all_money1 = all_money
                                print('购物车的商品:{}'.format(shopping_cars))
                                print("购物车里所有商品总计为{}元".format(all_money1))
                                have_money = input("请您付款(元):")
                                if all_money  <= int(have_money):
                                    print("本次购物成功,谢谢您的光临")
                                    going = input("是否继续购物( Y(y) or N(n):")
                                    if going.upper() == 'Y':
                                        all_money =0
                                        shopping_cars.clear()
                                        continue
                                    else:
                                        break
                                else:
                                    print('您的余额不足')
                                    break
                            else:
                                continue
                        else:
                            print('请输入有效的数字')
                    else:
                        print("输入有误,请输入数字")
            else:
                print('请输入有效的数字')
    else:
        print("输入有误,请输入数字")

  

作业:

#作业;处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕

# def func(filename,content):
# 	with open(filename,encoding='utf-8') as f :
# 		# while 1:
# 		# 	line = f.readline()
# 		for line in f:
# 			if content in line:
# 				yield line
#
# g = func('file','python')
#
# for i in g :
# 	print(i.strip())

  

时间差

自己的版本:

# 计算时间差
# '2017-09-11 08:30:00'  ----'2017-09-12 11:00:00'

import time

star_time = time.strptime('2017-09-11 08:30:00',"%Y-%m-%d %H:%M:%S")
end_time = time.strptime('2017-09-12 11:00:00',"%Y-%m-%d %H:%M:%S")
new_star_time = time.mktime(star_time)
new_end_time  = time.mktime(end_time)
new_time = new_end_time - new_star_time
print(new_time)   #秒
struc_time = time.localtime(new_time)
time = time.strftime("%H(h)%M(m)%S(s)",struc_time)
print(time)  # 小时;分钟;秒钟 10(h)30(m)00(s)

老师的版本: 

import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                       struct_time.tm_mday-1,struct_time.tm_hour,
                                       struct_time.tm_min,struct_time.tm_sec))

 

随机的验证码 (4位) 

 自己的版本:

#随机4位的验证码  #有限的循环一般用range
import  random
def func():
	ret_lis = []
	for i in range(4) :
		num = str(random.randint(0,9))
		arip_num = random.randint(65,90)  #[65,90]  生产数字, 字母 = chr(数字) #随机生产字母 用 ascii 码
		arp = chr(arip_num)   #字母= chr(数字)

		ret = random.choice([num,arp])
		ret_lis.append(ret)

	ret = " ".join(ret_lis)
	return ret

print(func())
#自己写的版本是把取到的4个元素放到列表后在转化为str

 老师的版本:

#循环组合
import random

def v_code():

	code = ''
	for i in range(5):

		num=random.randint(0,9)
		alf=chr(random.randint(65,90))
		add=random.choice([num,alf])
		code="".join([code,str(add)])  #循环一次组合一次

	return code

print(v_code())

 

计算器大作业

计算:a = ' 1 - 2 * ( ( 6 0 -3 0 -(40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'

要求:先计算括号里面的,在根据四则运算来计算;用的正则表达式的知识

import re

def del_backet(x): return x.strip('()')

def sovle(x):
	if '+-' in x : return x.replace('+-','-')
	if '-+' in x : return x.replace('-+','-')
	if '--' in x : return x.replace('--','+')
	if '++' in x : return x.replace('++','+')
	else: return x

def work(x):
	if '/'in x:
		i,j = x.split('/')
		return str(float(i) / float(j))
	if '*' in x:
		i, j = x.split('*')
		return str(float(i) * float(j))

def many_num(flat):   #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
	while 1:
		ret = re.search('d+.?d*[*/]-?d+.?d*',flat)  # 2*5;10/3;.....
		if ret:
			ret = ret.group()   #40/5;2*5;10/3
			new_ret = work(ret) #8;10;10/3
			flat = flat.replace(ret, new_ret)  # 40/5 --->8; 9-3.33333 + 7 /3*99/4*2998 +10 * 568/14
			flat = sovle(flat)
		# 55+55-5+4
		else:
			# ret = re.findall('-?d+.?d*', flat)  #[55,55,-5,5] 只要把数字匹配出来,累加就可以了,用findall拿到一个列表
			ret = re.finditer('-?d+.?d*', flat)    #迭代器
			n_ret = [i.group() for i in ret]  #列表的推导式
			num = 0
			for i in n_ret:
				num += float(i)
			return str(num)


def cla_func(a):
	while 1:
		r = a.replace(' ','')  #去空格
		no_backet = re.search('([^()]+)',r)
		if no_backet:
			no_ret = no_backet.group()      #(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )
			flat = del_backet(no_ret)  # 40/5  #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
			new_flat = many_num(flat)  # 40/5  #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
			a = r.replace(no_ret,new_flat)
			a = sovle(a)
		else:
			ret = many_num(r)  #没有空格后
			return ret


if __name__ == '__main__':
	ret =cla_func(input('>>>'))
	#a = '   1 -   2 * ( ( 6 0 -3 0  -(40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
	print(ret)

  

 有一个类的定义

1.初始化多个不同的对象

2.求最高的age的对象的name

# class Person:
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#
# l = []   #对象
# for i in range(10,21):
#     l.append(Person('alex%s'%(i),i))

  

# ne_age = max([i.age for i in l]) #内置函数
#
# for i in l:
#     if i.age == ne_age:
#         print(i.name)

  

# obj1 = max(l,key=lambda obj:obj.age) # 直接拿到对象  !!!
print (obj1.name)

 

有四个数字:1,2,3,4,能组成多少个不相同且无重复数字的三位数?,分别是多少?

#有4个数字:1,2,3,4;能组成多少个互不相同且无重复数字的三位数字?分别是多少? #循环嵌套
# def with_num():
#     n = 0
#     for i in range(1,5):            #百位
#         for j in range(1, 5):       #十位
#             for k in range(1, 5):   #个位
#                 if i==j or i==k or j==k:
#                     continue
#                 n+=1
#                 print(n)
#                 yield (str(i)+str(j)+str(k))

#
# for i in with_num():
#     print(i)

  

假设有100个person的对象,若两个对象的obj1,obj2的name和sex属性相同,则我们认为两个对象为同一个对象,已知一个列表中有100个对象,对这100个对象进行去重。

提示: 内置方法

# class Person:
#     def __init__(self,name,age,sex):
#         self.name = name
#         self.age = age
#         self.sex = sex
#
#     def __eq__(self, other):
#         if self.name == other.name and self.sex == other.sex:
#             return True
#
#     def __hash__(self):
#         return hash(self.name + self.sex)
#
# obj_lis = []
#
# for i in range(5):
#     obj_lis.append(Person('alex',i,'nan'))
#
# print(set(obj_lis))  #set 去重 依赖于__hash__;__eq__

  

#面试题

"""
有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序.
"""

l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3]
ret = list(set(l1))
print(ret)
ret.sort(key=l1.index)  # 按值在l1中的索引进行排序
print(ret)

l2 = [
    {"name": "alex", "age": 36},
    {"name": "GoldBoss", "age": 30},
    {"name": "xiaoyima", "age": 18}
]
#内置函数与匿名函数的结合
l2.sort(key=lambda x: x["age"])
print(l2)

 

去除多余嵌套的列表

list1 = [11, [22, 3], [4, ], [55, 66], 8, [9, [7, [12, [34, [26]]]]]]
# 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8]
list1 = [ 8, [9, [7, [12, [34, [26]]]]]]
# 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8]
def f(x):
    ret = []
    for b in x:   # 1
        if isinstance(b, list):#[2,[3]]
            for a in f(b):    # f(b)递归,直到递归到同一级的列表,比如对于list1来说,最后递归到最内层[26];取最内部的数;然后在
                               # 一层一层的往上取返回值,添加到列表里面;
                ret.append(a)
            #     pass
            # f(b)  没有拿取递归的返回值;
        else:
            ret.append(b)
    return ret

# def func(x):
#     return [a for b in x for a in func(b)] if isinstance(x, list) else [x]

ret = f(list1)
# ret = func(list1)
print(ret)


#isinstance(obj,class)  #来判断这个obj的类型是否为class ,类似与type()

  

 

  

原文地址:https://www.cnblogs.com/zenghui-python/p/10233919.html