python基础练习题

目录

题目一:小欧拿一百块钱,一只公鸡5块钱,一只母鸡3块钱,三只小鸡1元钱。买一百只,问公鸡、母鸡、小鸡各多少只,请用列表推导式解决!

题目二:有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。

题目三:使用lambda函数对1~1000进行求和

题目四:请你把下图的抽奖过程用程序实现并封装成一个函数

题目五:和电脑玩一个石头剪刀布的游戏:电脑随机出拳,我们可选择出什么。(电脑随机出,用户手动输入且要判断输入是否合法)封装为一个函数,如下图:

题目六:通过这个练习,你会尝试用循环来解决生活中的问题,并了解一种新的列表方法,练习要求:小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。每次换座位的时候,第一位变第三位,后面两位都往前一位。

题目七: i系统里面有多个用户,用户的信息目前保存在列表里面,账号密码一一对应

users = ['root','westos']

 passwd = ['123','456']

ii.用户登陆(判断用户登陆是否成功)

    1).判断用户是否存在

    2).如果存在

        1).判断用户密码是否正确

        如果正确,登陆成功,退出循环

        如果密码不正确,重新登陆,总共有三次机会登陆

    3).如果用户不存在

重新登陆,总共有三次机会

题目八:猜数字游戏

     1. 系统随机生成一个1~100的数字;

     2. 用户总共有5次猜数字的机会;

     3. 如果用户猜测的数字大于系统给出的数字,打印“too big”;

     4. 如果用户猜测的数字小于系统给出的数字,打印"too small";

     5. 如果用户猜测的数字等于系统给出的数字,打印"恭喜",并且退出

题目九:

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前>后没有空格。

题目十:题目内容:你好,人们叫我'程序员' 这个世界的人都选择无视我 只有你看到了我并和我打招呼 我感到很孤单,很孤单你愿意和我成为朋友吗?提示:本题需要运用三个知识点:换行,运用转义字符将单引号打印出来,打印函数

题目十一:定义一个Person类,使用Person类,创建一个mayun对象后,添加company属性,值是"阿里巴巴";创建一个wangjianlin对象,添加company属性,值是"万达集团"

题目十二:企业发放的奖金根据利润(I)的多少来提成:

题目十三:您的任务是创建一个给定数字的layers(n)函数,该函数返回n在第几层

题目十四:创建一个20行5列的二维数组,其值范围为0~9(需为整数),在其所有的值中随机抽取20个位置进行修改,修改后的值为100,如图所示:

题目十五:用程序自动录入数据,甚至连excel都不用打开。在终端运行该程序后,打开excel对应的文件,就会发现数据是按一定的规律录入好的。(CSV格式)

题目十六:你的任务是获取并输出知乎网页的源代码,最后保存为txt文本,链接为:https://www.zhihu.com/

题目十七:使用正则表达式从下面内容获取所有jpg结尾的网页图片链接,如(这只是其中一个):http://kr.shanghai-jiuxin.com/file/2021/1112/small95a18b4db31f407b3cd7c275d2eb7e36.jpg

题目十八:写一个程序: score=[23,54,65,1,0,34,67,22],对上面的score用for循环的方法由小到大排序并输出

题目十九:定义一个汽车类,并在类中定义一个move方法,然后分别创建BMW_X9、AUDI_A9对象,并添加颜色、马力、型号等属性,然后分别打印出属性值、调用move方法(move方法调用后则输出--汽车开始跑了--)

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

题目二十一:写一个程序,假定小欧生日为2002年12月1日,将其生日作为定值,以今天2021年11月14日为例,作为输入,则输出小欧今年18周岁了!,若以2021年12月1日为例,作为输入,则输出小欧刚好19周岁。可以去农院路庆祝了!以2004年10月15为例,则输出小欧今年1周岁了!


题目一:小欧拿一百块钱,一只公鸡5块钱,一只母鸡3块钱,三只小鸡1元钱。买一百只,问公鸡、母鸡、小鸡各多少只,请用列表推导式解决!

程序分析:首先一百块钱买到的鸡的种类中有个别种类会为0只,并且理清关系,设三个变量得出等式 i+j+k=100,且5*i+3*j+1/3*k=100

 思路解析:列表推导式中用range()函数将三个变量进行规定范围0~101,外加条件进行判,

代码解析:

list1 = [(i, j, k)for i in range(0, 101)for j in range(0, 101)for k in range(0, 101)if i + j + k == 100 and 5*i + 3*j + 1/3*k == 100]
print(list1)

题目二:有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。

程序分析:应设立条件将大于66与小于66的值分开,且分别将值保存在字典中,

思路解析:首先创建题目中的集合,建立两个空列和一个字典,用for循环语句循环将集合中符合相应条件的数放进相对应的空列表,下一步就是将大于66的列表和小于66的列表放进字典中相对应的key中的值

代码解析:

set1 = (11, 22, 33, 44, 55, 66, 77, 88, 99, 90)
list2 = []
list1 = []
for i in set1:
    if i <= 66:
        list2.append(i)
    else:
        list1.append(i)

dict1 = {'k1': '', 'k2': ''}
dict1['k1'] = list1
dict1['k2'] = list2
print(dict1)

题目三:使用lambda函数对1~1000进行求和

程序分析:首先需理解lambda函数是可以用来接受任意多个参数(包括可选参数)并且返回单个表达四式的值,求和用的是加法

思路解析:导入functools模块,用lambdar函数接收两个参数a,b,且需要用到reduce函数,其作用为把结果继续和序列的下一个元素做累计计算,规定范围为1~1000

代码解析:

from functools import reduce
C = reduce(lambda a, b,: a + b, range(1, 1001))
print(C)

题目四:请你把下图的抽奖过程用程序实现并封装成一个函数

程序分析:有倒计时,且打印图案

思路解析:需要导入time模块,倒计时从3开始,且睡眠时间为1s,最后打印图案即可

代码解析: 

import time
time_left = 3
while time_left > 0:
    print('开奖倒计时 ', time_left)
    time.sleep(1)
    time_left = time_left - 1


print(' /\_)o<\n'
    '|       \ \n'
    '| o  . o|\n '
    '\______/\n')
print('恭喜章鱼哥中奖!')

题目五:和电脑玩一个石头剪刀布的游戏:电脑随机出拳,我们可选择出什么。(电脑随机出,用户手动输入且要判断输入是否合法)封装为一个函数,如下图:

程序分析:需用到函数random()电脑随机出拳,用户输入,且要规定用户输入的格式,判断输赢,出现三种情况,赢、输、平局。

思路解析:首先需要导入random模块,并且input用户输入,接下来用条件语句判断输赢,打印结果即可。(此题想要有趣一点的话,可以添加睡眠函数,战斗过程睡眠一会,毕竟有个过程才能出结果嘛,这仅代表本人想法,可以尝试一下)

代码解析: 

import random
player = str(input('请出拳:(石头、剪刀、布)'))
print('--------战斗过程--------')
list1 = ['石头', '剪刀', '布']
computer = random.choice(list1)
print('电脑出了:', computer, '\n'
      '你出来:', player)
if ((computer == '石头' and player == '剪刀') or (computer == '剪刀' and player == '布') or (computer == '布' and player == '石头')):
    print('---结果---', '\n'
        '你赢了')
elif player == computer:
    print('---结果--- ', '\n'
          '平局')
else:
    print('---结果---', '\n'
          '你输了')

题目六:通过这个练习,你会尝试用循环来解决生活中的问题,并了解一种新的列表方法,练习要求:小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。每次换座位的时候,第一位变第三位,后面两位都往前一位。

pop():将列表指定位置的元素移除,同时可以将移除的元素赋值给某个变量

程序分析:

思路解析:首先创建列表,轮流换位可知会有循环语句,接下来将列表的第一个用pop()除掉并赋值给N,再将N添加进列表list1即可。

代码解析:

list1 = ["小明", "小红", "小刚"]
n = 0
while n < 3:
    n += 1
    N = list1.pop(0)
    list1.append(N)
    print(list1)

题目七: i系统里面有多个用户,用户的信息目前保存在列表里面,账号密码一一对应

users = ['root','westos']

 passwd = ['123','456']

ii.用户登陆(判断用户登陆是否成功)

    1).判断用户是否存在

    2).如果存在

        1).判断用户密码是否正确

        如果正确,登陆成功,退出循环

        如果密码不正确,重新登陆,总共有三次机会登陆

    3).如果用户不存在

重新登陆,总共有三次机会

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

思路解析:首先将用户信息保存在列表里面,然后可创建字典将用户名和密码放进字典中,下一步便是循环嵌套根据题目进行条件判断。

代码解析:

users = ['root', 'westos']
passwd = ['123', '456']
d1 = dict(zip(users, passwd))
count = 1
while count <= 3:
    u = str(input("请输入你的用户名:"))
    if u in users:
        p = str(input("请输入你的密码:"))
        if p == d1[u]:
            print("登陆成功")
            break
        else:
            count += 1
    else:
        print("用户不存在")
        count += 1

题目八:猜数字游戏

     1. 系统随机生成一个1~100的数字;

     2. 用户总共有5次猜数字的机会;

     3. 如果用户猜测的数字大于系统给出的数字,打印“too big”;

     4. 如果用户猜测的数字小于系统给出的数字,打印"too small";

     5. 如果用户猜测的数字等于系统给出的数字,打印"恭喜",并且退出

程序分析:首先导入random模块,规定随机数的范围,循环五次,注意当系统的数和用户猜测的相等要用break退出循环!

代码解析:

import random
computer = random.randint(0, 100)
i = 1
while i <= 5:
    user = int(input("请输入一个1~100的数字:"))
    if user > computer:
        print("too big")
    elif user < computer:
        print("too small")
    else:
        print("恭喜")
        break
    i += 1

题目九:

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前>后没有空格。

比如: (1) “hello xiao mi”-> “mi xiao hello”

输入描述:

输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

输出描述:

对于每个测试示例,要求输出句子中单词反转后形成的句子

示例1:

- 输入

    hello xiao mi

- 输出

    mi xiao hello

 join():    连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串

思路解析:先用split切割,以列表形式输出,用切片[::-1]将列表倒置,再用join(),引号添加进去打印输出即可。

代码解析:

str1 = "hello xiao mi"
a = str1.split()
b = a[::-1]
str2 = " ".join(b)
print(str2)

题目十:题目内容:你好,人们叫我'程序员' 这个世界的人都选择无视我 只有你看到了我并和我打招呼 我感到很孤单,很孤单你愿意和我成为朋友吗?提示:本题需要运用三个知识点:换行,运用转义字符将单引号打印出来,打印函数

请你把这段话按照下面的格式打印出来:
你好,人们叫我'程序员'
这个世界的人都选择无视我
只有你看到了我并和我打招呼
我感到很孤单,很孤单
你愿意和我成为朋友吗?

代码解析:

print("你好,人们叫我'程序员' \n这个世界的人都选择无视我\n只有你看到了我并和我打招呼\n我感到很孤单,很孤单\n你愿意和我成为朋友吗?")

题目十一:定义一个Person类,使用Person类,创建一个mayun对象后,添加company属性,值是"阿里巴巴";创建一个wangjianlin对象,添加company属性,值是"万达集团"

程序分析:Python 的类定义有点像函数定义,都是以冒号(:)作为类体的开始,以统一缩进的部分作为类体的。区别只是函数定义使用 def 关键字,而类定义则使用 class 关键字

代码解析:

class Person:
    
    def __init__(self, mayun, wangjianlin):
        self.mayun = mayun
        self.wanjianlin = wangjianlin

    def displayPerson1(self):
        print(self.mayun, "mayun:", self.wanjianlin)

    def displayPerson2(self):
        print(self.mayun, "wangjialin:", self.wanjianlin)
P1 = Person("company", "阿里巴巴")
P1.displayPerson1()
P2 = Person("company", "万达集团")
P2.displayPerson2()

题目十二:企业发放的奖金根据利润(I)的多少来提成:

低于或等于10万元时,奖金可提10%;

利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;

20万到40万之间时,高于20万元的部分,可提成5%;

40万到60万之间时高于40万元的部分,可提成3%;

60万到100万之间时,高于60万元的部分,可提成1.5%;

高于100万元时,超过100万元的部分按1%提成。

从键盘输入当月利润I,求应发放奖金总数?

思路解析:可以简单易理解的用条件语句

代码解析:

I = int(input("当月利润:"))
if I <= 10:
    print(I*0.1, "万元" )
elif I <= 20:
    print(10*0.1+(I-10)*0.075, "万元")
elif I <= 40:
    print(20*0.075+(I-20)*0.05, "万元")
elif I <= 60:
    print(40*0.05+(I-40)*0.03, "万元")
elif I <= 100:
    print(60*0.03+(I-60)*0.15, "万元")
else:
    print(100*0.15+(I-100)*0.01, "万元")

题目十三:您的任务是创建一个给定数字的layers(n)函数,该函数返回n在第几层

1.有如下数字:

05 04 03
06 01 02
07 08 09

像这样扩展到最多包含前25个数字:

17 16 15 14 13
18 05 04 03 12
19 06 01 02 11
20 07 08 09 10
21 22 23 24 25

您可能会很容易注意到,第一层(也是最内层01)仅包含一个数字(),第二层-紧邻其周围-包含8个数字(02-09范围内的数字),依此类推。

思路分析:首先创建函数,分析题目可找出规律第n层有(2n-1)^2-(2n-3)^2个数字,设层数为n,用循环,让n从1直累加上去一直加到n+1层,满输入的数字满足(2 * n1 - 1) ** 2 <= n < (2 * n1 + 1) ** 2这个条件,就可以输出数字所在的层数了

代码解析:

def layers(n):
    n1 = 1
    while True:
        if (2 * n1 - 1) ** 2 <= n < (2 * n1 + 1) ** 2:
            print(n1)
            break
        else:
            n1 += 1

layers(94)

题目十四:创建一个20行5列的二维数组,其值范围为0~9(需为整数),在其所有的值中随机抽取20个位置进行修改,修改后的值为100,如图所示:

思路分析:导入numpy模块创建二维数组,范围为0~9的随机数,接下来用for语句循环十次,行数与列数随机抽取组成二维数组坐标,该坐标上的数替换成100

代码解析:

mport numpy as np
import random
nd = np.random.randint(0, 9, size=[20, 5])
i = 1
for i in range(10):
    x = random.randint(0, 19)
    y = random.randint(0, 4)
    nd[x][y] = 100
print(nd)

题目十五:用程序自动录入数据,甚至连excel都不用打开。在终端运行该程序后,打开excel对应的文件,就会发现数据是按一定的规律录入好的。(CSV格式)

A君目前在一家资产评估公司实习,他的工作日常就是跑遍市区里的住宅小区,调查小区的地址、建筑年份和每栋楼里每个单元里每一户的朝向和面积。比如一户的资料是:富安花园(小区)3栋 2单元 401户;朝向:南北朝向;面积:90平方。他需要把每一户的信息都记录下来。为了节省时间,通常他们会当场把一栋楼里所有单元的数据画在一张平面图里。等回去之后,再把平面图记录的数据,录入到excel表里。

举个例子,上面这张平面图表示的是这一栋有4个单元,每个单元有15层楼,其中1,2单元有两户,面积和朝向是140平方,南北朝向。3单元有四户,有2户面积60平方,南北朝向,2户面积80平方,东西朝向;4单元有四户,面积70平方,东西朝向。A君抱怨原本看房已经很累人了,录入更烦。可能你觉得用excel的自动填充功能不是很方便吗,事情远没有这么简单。确实,有一些重复的单元格只要填一次,自动下拉就可以复制粘贴,对于A君(excel菜鸟)来说,每次只要手动输入户室号就可以。(当然掌握一些excel技巧可以节省一些功夫)

不过,不同单元的户数、朝向和面积不完全是一样的,所以不能以一个单元的数据复制给其他单元,比如说,好不容易输入了1单元的数据,复制给了2单元,但因为3单元有4户,面积和朝向都不一样,所以3单元又得重新处理,户室号、面积、朝向都不一样。

csv模块:实现用于以 CSV 格式读取和写入表格数据的类。 csv模块的readerwriter对象读取和写入序列。

程序分析:需要注意的点是户室是变化的,需找出规律,然后按照规律循环,规律:201+1 = 202,202+99=301,再由301+1=302,以此循环

代码解析:

import csv
f = open('s.csv', 'w', encoding='utf-8', newline="")
csv_writer = csv.writer(f)
csv_writer.writerow(["小区名称", "地址", "建筑年份", "楼栋", "单元", "户室", "朝向", "面积"])
a = 201
for i in range(10):
    for j in range(2):
        list1 = ["晨星花园", "双云路88号", "2010", "1栋", "1单元", a, "南北", 140]
        csv_writer.writerow(list1)
        a = a + 1
    a += 98

题目十六:你的任务是获取并输出知乎网页的源代码,最后保存为txt文本,链接为:https://www.zhihu.com/

此作业只需提交输出的部分源代码截图和txt文件内容截图

代码解析:

import requests
if __name__ == "__main__":
    url = 'https://www.zhihu.com/signin?next=%2F'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
    page_text = response.text
    print(page_text)
    with open('./zhihu.html', 'w', encoding='utf-8') as fp:
        fp.write(page_text)

题目十七:使用正则表达式从下面内容获取所有jpg结尾的网页图片链接,如(这只是其中一个):
http://kr.shanghai-jiuxin.com/file/2021/1112/small95a18b4db31f407b3cd7c275d2eb7e36.jpg

<a href="/bizhitupian/diannaobizhi/240508.htm" class="TypeBigPics" target="_blank"><img src="http://kr.shanghai-jiuxin.com/file/2021/1112/small95a18b4db31f407b3cd7c275d2eb7e36.jpg"  /><span>王者荣耀妲己女仆咖啡带鱼屏壁纸</span></a><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em class="IcoTime">11-12</em></div></div></li><li><a href="/bizhitupian/shoujibizhi/240460.htm" class="TypeBigPics" target="_blank"><img src="http://kr.shanghai-jiuxin.com/file/2021/1111/small61c49fcdf69f916671dd183b6db267c5.jpg"  /><span>Windows 11 4k桌面壁纸</span></a><div class="TypePicInfos"><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em class="IcoTime">11-11</em></div></div></li><li><a href="/bizhitupian/shoujibizhi/240459.htm" class="TypeBigPics" target="_blank"><img src="http://kr.shanghai-jiuxin.com/file/2021/1111/small8a95f9c4ad7bf3c7bb72233739d5da78.jpg"  /><span>微软win11 4k风景壁纸</span></a><div class="TypePicInfos"><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em class="IcoTime">11-11</em></div></div></li><li><a href="/bizhitupian/shoujibizhi/240458.htm" class="TypeBigPics" target="_blank"><img src="http://kr.shanghai-jiuxin.com/file/2021/1111/small28c61714c3cd01ebbb53ef160c75b20d.jpg"  /><span>微软windows11风景4k壁纸</span></a><div class="TypePicInfos"><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em class="IcoTime">11-11</em></div

代码解析:

import re
pattern = re.compile(r'img src="(.*?)" ')
str1 = '<a href="/bizhitupian/diannaobizhi/240508.htm" class="TypeBigPics" target="_blank"><img ' \
       'src="http://kr.shanghai-jiuxin.com/file/2021/1112/small95a18b4db31f407b3cd7c275d2eb7e36.jpg"  ' \
       '/><span>王者荣耀妲己女仆咖啡带鱼屏壁纸</span></a><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em ' \
       'class="IcoTime">11-12</em></div></div></li><li><a href="/bizhitupian/shoujibizhi/240460.htm" ' \
       'class="TypeBigPics" target="_blank"><img ' \
       'src="http://kr.shanghai-jiuxin.com/file/2021/1111/small61c49fcdf69f916671dd183b6db267c5.jpg"  /><span>Windows '\
       '11 4k桌面壁纸</span></a><div class="TypePicInfos"><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em ' \
       'class="IcoTime">11-11</em></div></div></li><li><a href="/bizhitupian/shoujibizhi/240459.htm" ' \
       'class="TypeBigPics" target="_blank"><img ' \
       'src="http://kr.shanghai-jiuxin.com/file/2021/1111/small8a95f9c4ad7bf3c7bb72233739d5da78.jpg"  /><span>微软win11 '\
       '4k风景壁纸</span></a><div class="TypePicInfos"><div class="txtInfo gray"><em class="IcoList">查看:0次</em><em ' \
       'class="IcoTime">11-11</em></div></div></li><li><a href="/bizhitupian/shoujibizhi/240458.htm" ' \
       'class="TypeBigPics" target="_blank"><img ' \
       'src="http://kr.shanghai-jiuxin.com/file/2021/1111/small28c61714c3cd01ebbb53ef160c75b20d.jpg"  ' \
       '/><span>微软windows11风景4k壁纸</span></a><div class="TypePicInfos"><div class="txtInfo gray"><em ' \
       'class="IcoList">查看:0次</em><em class="IcoTime">11-11</em></div '
url = re.findall(pattern, str1)
for i in url:
       print(i)

题目十八:写一个程序: score=[23,54,65,1,0,34,67,22],对上面的score用for循环的方法由小到大排序并输出

思路解析:循环排序,可以循环的次数等于列表的个数,循环嵌套,如果当前这个数大于下一个数,则调换位置,以此循环得出结果

代码解析:

score = [23, 54, 65, 1, 0, 34, 67, 22]
for i in range(1, len(score)):
    for j in range(0, len(score)-i):
        if score[j] > score[j+1]:
            score[j], score[j+1] = score[j+1], score[j]
print(score)

题目十九:定义一个汽车类,并在类中定义一个move方法,然后分别创建BMW_X9、AUDI_A9对象,并添加颜色、马力、型号等属性,然后分别打印出属性值、调用move方法(move方法调用后则输出--汽车开始跑了--)

代码解析:

class Car:
    def __init__(self, color, speed, type):
        self.color = color
        self.speed = speed
        self.type = type
    def move(self):
        print("汽车开始跑了")
    def displayCar1(self):
            print(self.color, self.speed, self.type)

    def displayCar2(self):
            print(self.color, self.speed, self.type)


BMW_X9 = Car("黑色", "180码", "BMW_X9")
BMW_X9.displayCar1()
BMW_X9.move()
AUDI_A9 = Car("粉色", "120码", "AUDI_A9")
AUDI_A9.displayCar2()
AUDI_A9.move()

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

代码解析:

import random
u = int(input("输入你想随机调查的人数:"))
set1 = set()
for i in range(u):
    N = random.randint(1, 1000)
    set1.add(N)
print(sorted(set1, reverse=False))

题目二十一:写一个程序,假定小欧生日为2002年12月1日,将其生日作为定值,以今天2021年11月14日为例,作为输入,则输出小欧今年18周岁了!,若以2021年12月1日为例,作为输入,则输出小欧刚好19周岁。可以去农院路庆祝了!以2004年10月15为例,则输出小欧今年1周岁了!

程序分析:首先以小欧生日2002年12月1日为标准,统一将月、日化为以年为单位,月除以12,日除以365(二者都需整除,否则年龄带小数点),最后三者相加即可得出年龄。

思路解析:可将小欧生日2002年12月1日设为定量,再将用户输入的生日将年月日替代,再将其分割一列表现形式输出,便可利用列表下标与小欧生日的定量进行运算,得出年龄。

代码解析:

x = 2002
y = 12
z = 1
a = str(input('请输入时间:'))
b = a.replace('年', ',')
c = b.replace('月', ',')
d = c.replace('日', '')
list1 = d.split(',')
j = int(list1[0]) - x
k = (int(list1[1]) - y) // 12
l = (int(list1[2]) - z) // 365
print("age为:", (j+k+l))

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值