python 练习2

#######假定有下面这样的列表:
    names = ['fentiao', 'fendai', 'fensi', 'apple']
    输出结果为:'I have fentiao, fendai, fensi and apple.'

names = ['fentiao', 'fendai', 'fensi', 'apple']
print 'I have ' + ','.join(names[:-1]) + ' and ' + names[-1]
 
######系统里面有用户 用户有密码
    users = ['root','westos']
    passwds = ['123','456']
####用户登陆(判断用户登陆是否成功)
    1).判断用户是否存在
        2).如果存在:
            判断用户密码是否正确:先找出用户对应的索引,
            根据passwds[索引值]
            如果正确:登陆成功,退出循环
            如果密码不正确:重新登陆 (机会只有三次)
    2).不存在
    重新登陆(机会只有三次)
"""
users = ['root','westos']
passwds = ['123','456']
trycont = 0
 while trycont < 3:
     inuser = raw_input('用户名:')
     inpasswd = raw_input('密码:')
     trycont += 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 '三次机会已经用完'
 
后台管理员只有一个用户:admin 密码:admin
2.当管理员登陆成功后,才可以管理用户信息
3.管理用户信息包含
    添加用户信息
    删除用户信息
    查看用户信息
    退出
"""
print '管理员登陆'.center(50, '*')
inuser = raw_input('UserName:')
inpasswd = raw_input('Password:')
users = ['root', 'westos']
passwds = ['123', '456']
if inuser == 'admin' and inpasswd == 'admin':
    print '管理员登陆成功'
    print '用户信息管理'.center(50, '*')
    while True:
        print """
        1 -添加用户信息
        2 -删除用户信息
        3 -查看用户信息
        4 -退出
        """
        choice = raw_input('请选择你的操作:')
        if choice == '1':
            print '添加用户信息'.center(50, '*')
            addUser = raw_input('添加用户:')
            if addUser in users:
                print '用户%s已经存在' % addUser
            else:
                addPasswd = raw_input('密码:')
                users.append(addUser)
                passwds.append(addPasswd)
                print '添加用户%s成功' %addUser
        elif choice == '2':
            print '删除用户信息'.center(50,'*')
            delUser = raw_input('删除的用户:')
            delIndex = users.index(delUser)
            users.remove(delUser)
            passwds.pop(delIndex)
            print '删除用户%s成功' %delUser
        elif choice == '3':
            print '查看用户信息'.center(50,'*')
            print '\t用户名\t密码'
            userCount = len(users) #2
            for i in range(userCount): # 0 ,1
                print '\t%s\t%s' %(users[i],passwds[i])
        elif choice == '4':
            exit()
        else:
            print '请输入正确的选择'
else:
    print '管理员登陆失败!'

 
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
    # 1. 用户输入一句英文句子;
    # 2. 打印出每个单词及其重复的次数;
 "hello java hello python"
 hello 2
 java 1
 python 1

s = raw_input('s:')
# 1.把每个单词分割处理
s_li = s.split()
print s_li
# 2.通过字典存储单词和该单词出现的次数
words_dict = {}
 
 
数字重复统计:
    1). 随机生成1000个整数;
    2). 数字的范围[20, 100],
    3). 升序输出所有不同的数字及其每个数字重复的次数;
"""
import random
# 1.随机生成1000个整数
all_nums = []
for item in range(1000):
    # 2.数字的范围
    all_nums.append(random.randint(20, 100))
# 3.升序输出所有不同的数字及其每个数字重复的次数
sorted_num = sorted(all_nums)
nums_dict = {}
for num in sorted_num:
    if num in nums_dict:
        nums_dict[num] += 1
    else:
        nums_dict[num] = 1
print nums_dict

案例1:
    编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
    元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数

案例2:
    编写函数, 接收一个列表(包含30个整形数)和一个整形数k, 返回一个新列表.
    函数需求:
        - 将列表下标k之前对应(不包含k)的元素逆序;
        - 将下标k及之后的元素逆序;
"""
def cacluate(*num):
    li = []
    avg = sum(num)/len(num)
    for i in num:
        if i > avg:
            li.append(i)
    return avg,li
count = cacluate(12,13,14,15,16)
print count

 import random


 def fun(alist, k):
     if k < 0 or k > len(alist):
         return 'error key'
     newL1 = alist[:k]
     newL2 = newL1[::-1]
     newL3 = alist[k:]
     newL4 = newL3[::-1]
     return newL2 + newL4

 list = []
 for i in range(30):
     num = random.randint(1,100)
     list.append(num)
 print list
 a = fun(list,4)
 print a

 def fun(alist, k):
     if k < 0 or k > len(alist):
         return 'error key'
     return alist[:k][::-1] + alist[k:][::-1]

######拟轮盘抽奖游戏
 轮盘分为三部分: 一等奖, 二等奖和三等奖;
 轮盘转的时候是随机的,
       如果范围在[0,0.08)之间,代表一等奖,
       如果范围在[0.08,0.3)之间,代表2等奖,
       如果范围在[0, 1.0)之间,代表3等奖,
 模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数.

import random
rewardDict = {
    '一等奖': (0, 0.08),
    '二等奖': (0.08, 0.3),
    '三等奖': (0.3, 1)
}

def rewardFun():
    """用户得奖等级"""
    # 生成一个0~1之间的随机数
    num = random.random()
    # 判断随机转盘转的数是几等奖
    for k, v in rewardDict.items():
        # 这里的v是元组
        if v[0] <= num < v[1]:
            return k
# print rewardFun()
resultDict = {}
for i in range(1000):
    # res:本次转盘的等级(一/二/三等奖)
    res = rewardFun()
    if res not in resultDict:
        resultDict[res] = 1
    else:
        resultDict[res] = resultDict[res] + 1
for k, v in resultDict.items():
    print k, '---------->', v
 


########编写一个名为collatz()的函数,它有一个名为number的参数
  如果参数是偶数,那么collatz()就打印出number//2
  如果number是奇数,collatz()就打印3*number+1

def collatz(number):
     if number % 2 == 0:
         print number // 2
     else:
         print 3 * number + 1
    print number // 2 if number % 2 == 0 else 3 * number + 1
collatz(2)
扫描二维码关注公众号,回复: 3032269 查看本文章
 

猜你喜欢

转载自www.cnblogs.com/zhengyipengyou/p/9578704.html
今日推荐