欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python简单试题4

程序员文章站 2024-03-30 23:37:09
( ps : 题目中用到的一些random函数在最后末尾处有介绍) 1,在屏幕上显示跑马灯文字 2,设计验证码 3,求列表第一大和第二大元素 4,计算指定的年月日是这一年的第几天 5,双色号选球问题 6,约瑟夫环问题 7,random模块简单介绍 试题来源于骆昊大神 ......

( ps : 题目中用到的一些random函数在最后末尾处有介绍) 

1,在屏幕上显示跑马灯文字

import os # 调用os模块
import time # 调用时间模块
def main():
    content = '河南农大欢迎您!!!!' # 赋值字符串
    while true:
       os.system("cls")  # os.system("clear") # 清屏操作
       print(content)
       time.sleep(0.2) # 延迟200毫秒
       content = content[1:] + content[0] # 切片处理

if __name__ == '__main__': # 脚本运行程序
    main()

2,设计验证码

import random # 调用随机数模块
def generate_code(code_len = 4):
    all_chars = '0123456789abcdefjhijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'
    # all_chars = '今天是蓝桥杯国赛的日子'
    # 可以自行设置你想要的字符
    last_pos = len(all_chars) - 1 # 索引是从零开始的,故要将长度减一
    code = ''
    for _ in range(code_len): # 进行遍历循环
        index = random.randint(0,last_pos) # 产生随机数字
        code += all_chars[index] # 取出索引为index的字符
    return code
print(generate_code())

3,求列表第一大和第二大元素

def max2(num):
    m1,m2 = (num[0],num[1]) if num[0] > num[1] else (num[1],num[0])
    # 判断 num[0] 和 num[1] 的大小,将大值赋值给m1
    for i in range(2,len(num)): # 进行遍历
        if num[i] > m2: # 判断是否大于m2
            if num[i] > m1: # 判断是否大于m1
                m1,m2 = num[i],m1 # 进行赋值操作
            else :
                m2 = num[i]
    return m1,m2 # 返回一个元组
print(max2([1,5,3,6,9,15,5,2,3,-9,-8]))

4,计算指定的年月日是这一年的第几天

def is_leap_year(year): # 判断是否为闰年
    flag = true if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 else false
    # 闰年判断方式:年份能被四整除而且不能被100整除,年份能被四百整除,两个条件符合其一都为闰年
    return flag # 返回一个布尔值
def date(year,month,day):
    day_sum = 0
    date1 = [[31,28,31,30,31,30,31,31,30,31,30,31],[31,29,31,30,31,30,31,31,30,31,30,31]] 
    # 定义列表,分别为闰年,平年每个月多少天
    for i in range(len(date1[is_leap_year(year)])): # 遍历 布尔值可以替换成0,1
        if i < month-1: #  索引从0开始
            day_sum += date1[is_leap_year(year)][i]
        else:
            day_sum += day
            break
    return day_sum
print(date(2019,5,25))
print(date(2019,2,1))

5,双色号选球问题

from random import randrange,randint,sample
# 导入random模块下的几个函数
def display(balls):
    for index,ball in enumerate(balls):
        # enumerate:给元素前加上索引构成每一个元素都是元组
        if index == len(balls) - 1: # 判断是否为最后一个元素
            print('|',end=" ")
        print("%02d" % ball,end=' ') # %02d:输出整数类型,并以两位数输出,01,29,03
    print() # 输出换行符

def random_select():
    red_balls = [x for x in range(1,34)] # 生成一个列表
    selected_balls = []
    selected_balls = sample(red_balls,6) # 从red_balls中随机挑选六个元素并以列表的形式返回
    selected_balls.sort() # 给列表进行排序
    selected_balls.append(randint(1,16)) # 添加一个元素
    return selected_balls
def main():
    n = int(input("请下注:"))
    for _ in range(n):
        display(random_select())

if __name__ == "__main__":
    main()

6,约瑟夫环问题

有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将
其中15个人扔到海里面去,有个人想了个办法就是大家围成一个圈,由某个人开
始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,报到9的人
继续扔到海里面,直到扔掉15个人。由于上帝的保佑,15个基督徒都幸免于难,问这
些人最开始是怎么站的,哪些位置是基督徒哪些位置是非基督徒。
def main():
    person = [true] * 30 #生成一个列表,列表重含有三十个true 假定都为基督教人
    index,count,number = 0,0,0 # 给index,count,number 赋值0
    while count < 15:
        if person[index] == true: 
            number += 1 #喊话数字加一
            if number == 9: # 当数字为九时
                person[index] = false # 此人为非基督教
                count += 1 # 人数加一
                number = 0 # 从新开始喊话
        index += 1 # 无论是否为基督教信徒,索引值都要加一
        index %= 30 # 索引值不可以超过29
    for i in person:
        print("基",end = ' ') if i else print("非",end = ' ') # 进行输出
if __name__ == "__main__":
    main()

7,random模块简单介绍

import random
print(random.random()) #产生随机数,从0到1的浮点数
print(random.uniform(1,4)) # 产生从1到4的浮点数
print(random.randint(1,6)) #产生从1到6的浮点数
print(random.randrange(10,100,5)) # 从10到100中五的倍数的数字选出一个
print(random.choice([1,2,3,4,5,6])) # 从队列中选出一个元素
list1 = ['a','b','c','d','e','f','g','h']
random.shuffle(list1) # 将列表乱序排列
print(list1)
a = random.sample([12,3,4,4,5,6,6,67,7,7,56,6,6,6,6,6,6,6],5) # 从列表中选出五个元素组成列表返回
print(a)

试题来源于骆昊大神