Python小练习之列表和集合的使用

练习1:给出一个月份,判断该月是什么季节

#用户输入月份
month = int(input('输入月份:'))
#判断季节
if month in [3,4,5]:
    print('春季')
elif month in [6,7,8]:
    print('夏季')
elif month in [9,10,11]:
    print('秋季')
elif month in [12,1,2]:
    print('冬季')
else:
    print('请输入正确值')

练习2:格式化输出

names = ['fentiao','fendai','fensi','fenpi'] ,输出:I have fentiao, fendai, fensi and fenpi.

names = ['fentiao','fendai','fensi','fenpi']
方法一:
print('I have ' + ','.join(names[:-1])+ ' and ' + names[-1])
方法二:
for i in range(4):
    if i == 0:
        print('I have %s,' %names[i],end='')
    elif i == 1:
        print('%s,' %names[i],end='')
    elif i == 2:
        print('%s and ' %names[i],end='')
    else:
        print('%s.' %names[i])

练习3:给出年月日:YYYY-MM-DD,判断为该年的第几天

# 用户输入指定格式的日期
date = input('输入日期(格式为YYYY-MM-DD):')
# 将年月日分离
date1 = date.split('-')
year = int(date1[0])
month = int(date1[1])
day = int(date1[2])
# 定义计数器
num = 0
# 判断第几天
li = [31,28,31,30,31,30,31,31,30,31,30,31]
if ((year%4 == 0 and year%100!=0)or year%400 == 0):
    li[1] = 29
for i in range(12):
    if month > i + 1:
        num += li[i]
    else:
        num += day
        break
print('这是%d年的第%d天' %(year,num))

练习4:用户管理

1.系统里面有多个用户,用户的信息目前保存在列表里面 users = ['root','westos'] ,passwds = ['123','456']

2.用户登陆(判断用户登陆是否成功;判断用户是否存在,如果存在判断用户密码是否正确,如果正确,登陆成功,退出循环;如果密码不正确,重新登陆,总共有三次机会登陆;如果用户不存在,重新登陆,总共有三次机会)

users = ['root', 'westos']
passwds = ['123', '456']
trycount = 0
while trycount < 3:
    inuser = input('用户名:')
    inpasswd = input('密码:')
    trycount += 1
    if inuser in users:
        index = users.index(inuser)
        passwd = passwds[index]
        if inpasswd == passwd:
            print('%s用户登录成功' %inuser)
            break
        else:
            print('%s登录失败:密码错误' %inuser)
    else:
        print('%s用户不存在' %inuser)
else:
    print('登录超过3次,请稍后...')

练习5:会员信息管理

1. 后台管理员 admin 密码:admin

2. 管理员才能看到会员信息

3. 会员信息包含(添加会员信息、删除会员信息、查看会员信息、退出)

users = ['root', 'westos']
passwds = ['123', '456']
inuser = input('用户名:')
inpasswd = input('密码:')
if (inuser == 'admin' and inpasswd == 'admin'):
    print('%s用户登录成功' %inuser)
    print('会员管理'.center(50,'*'))
    while True:
        print("""
                1.添加会员信息
                2.删除会员信息
                3.查看会员信息
                4.退出
            """)
        inadmin = input('请输入动作:')
        if inadmin == '1':
            print('添加会员信息'.center(50,'*'))
            adduser = input('输入添加的用户名:')
            if adduser in users:
                print('%s用户已存在' %adduser)
                continue
            else:
                addpasswd = input('输入用户密码:')
                users.append(adduser)
                passwds.append(addpasswd)
                print('%s会员用户添加成功' %adduser)
        elif inadmin == '2':
            print('删除会员信息'.center(50,'*'))
            deluser = input('请输入删除的会员用户名:')
            if deluser in users:
                index = users.index(deluser)
                delpasswd = passwds[index]
                users.remove(deluser)
                passwds.remove(delpasswd)
                print('%s会员用户已删除' %deluser)
            else:
                print('%s会员用户不存在' %deluser)
        elif inadmin == '3':
            print('查看会员信息'.center(50,'*'))
            print('\t用户名\t密码')
            userCount = len(users)
            for i in range(userCount):
                print('\t%s\t%s' %(users[i],passwds[i]))
        elif inadmin == '4':
            exit()
        else:
            print('请输入正确的动作')
    else:
        print('%s用户登录失败')

 

练习6:菲波纳契数列

li = [1,1]
tmp,num = 1,1
rep = 20
for i in range(rep -2):
    tmp,num = num, tmp+num
    li.append(num)
print(li)

练习7:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成“去重”与排序工作

import random
s = set([])
for i in range(int(input('N:'))):
    s.add(random.randint(1,1000))
print(s)
print(sorted(s))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值