2023智警杯CIPUC校内选拔赛-Python语言基础

1. 根据提供的某班级数学成绩单math.csv,计算并打印班级平均成绩
1) 使用with open万式读取文件数据:
2) 使用len()进行计算,要求输出结果为整数

with open(???)as file:
    score = file.???()  #一次性续败数个文件,自动将文件内容分析成一个行的“字符串”列表。
    listl = [int(i) for ??? in ???] # 使用序列解析式,计算班级平均成绩
    print("班级平均成绩为:",int(sum(???)/len(???)))

答案如下: 

with open('math.csv') as file:
    score = file.readlines()
    list1 = [int(i.strip()) for i in score]
    print("班级平均成绩为:",int(sum(list1)/len(list1)))

2. 编写程序,要求使用ASCI码转换字符串大小写,对输入的字符参数进行大小写转换,即输入小写内容,输出大写;输入大写则输出小写内容;其他字符不变;

针对大小写的转换,可以考虑使用对应ASCII码进行切换,其中a-为数字97-122,A-Z为数字65.90,大小写字母之间的编号相差32
思路:确认对应ASCII码是否在对应范围内,然后进行操作
知识点:类型转换

ord():将字符转化成整数值,参数是长度为1的字符串,简称字符。当参数为8比特的字符串时,返回该字节的值。例如,ord(a”)返回整形数值97。

chr():将整数(0-255)转换成一个字符,字符的asci码等于参数中的整形数值例如chr(97)返回字符a,该方法是ord()的反方法
备注,函数swapcase()方法也可以用于对字符串的大小写字母进行转换。

import sys

msg="qingQIAO_HighSchool"

def my_function(???):
    for i in msg:
        if 97 <= ??? <= 122:                # 对小写字母数值判断
            upper_num = ??? - 32            # 转换得到大写字母数值
            print(chr(upper_num),end="")       # 通过数值返回大写字母并打印
        elif ??? :                             # 对大写字母数值判断,转换成小写字母
            ???
            ???
        else:
            print(i,end="")       # 其他字符不变直接打印

print("转换后的字符串为:",end="")

my_function(???)

答案如下: 

import sys

msg="qingQIAO_HighSchool"

def my_function(msg):
    for i in msg:
        if 97 <= ord(i) <= 122:                # 对小写字母数值判断
            upper_num = ord(i) - 32            # 转换得到大写字母数值
            print(chr(upper_num),end="")       # 通过数值返回大写字母并打印
        elif 65 <= ord(i) <= 90 :              # 对大写字母数值判断,转换成小写字母
            lower_num = ord(i) + 32
            print(chr(lower_num),end="")
        else:
            print(i,end="")       # 其他字符不变直接打印

print("转换后的字符串为:",end="")

my_function(msg)

 3. 计算机中IP地址是32位二进制数字组成的数字序列,

常用的表示方法是将二进制数字从末尾往前每4个二进制数字作为一个字节转换成10进制数字进行表示,

因此平时常见的IP表示为12个阿拉伯数字,每3个数字为一组,组与组之间用英文句点“.”来分隔,例如192.168.1.7。

 编程进制转换程序代码,要求可以对输入的IP地址进行二进制转换并输出结果,例如输入192.168.1.7,输出为“11000000101010000000000100000111”;

1)为变量ip地址进行赋值;

2)对ip地址数据进行切分,随后对切分后的数据进行二进制转换;

3)要求IP地址中每组数值转换后长度为8,长度不足部分左侧补0,推荐使用内置函数补齐字符串;

4)输出结果忽略二进制前缀,连接每组数据,最后输出结果长度为32位;

import sys
ip = "172.38.56.2"       # 得到IP地址
list1 = ip.???('.')      # 指定分隔符对字符串进行切片
list2 = []               # 空列表

for num in list1:
    num = ???            # 将切分后的数据转换成数值类型并转换为二进制
    num = num[2:]        # 去掉二进制结果中前缀
    list2.append(???)    # 长度为8 ,不足补0,往空列表追加新元素

str = ''.join(list2)     # 连接列表中所有元素,形成新的字符串
print("转换成二进制结果为:",???)         # 打印字符串,即最后的32位二进制IP地址

 答案如下:

import sys
ip = "172.38.56.2"       # 得到IP地址
list1 = ip.split('.')      # 指定分隔符对字符串进行切片
list2 = []               # 空列表

for num in list1:
    num = bin(int(num))            # 将切分后的数据转换成数值类型并转换为二进制
    num = num[2:]        # 去掉二进制结果中前缀
    list2.append("0"*(8-len(num))+num)    # 长度为8 ,不足补0,往空列表追加新元素
    
str = ''.join(list2)     # 连接列表中所有元素,形成新的字符串
print("转换成二进制结果为:",str)         # 打印字符串,即最后的32位二进制IP地址

4.已知上网流量1GB=1024MB,19元包月套餐中通用流量为15G若超出流量按照0.29元/MB计,不足1M的按照1M算,本月流量已超1.25G,求本月账单并打印。

import math
MB = math.ceil(???)               #计算超出的流量,向上取整
money = ???                       #计算费用
print("本月账单为:",???,"元")

答案如下: 

import math
MB = math.ceil(1.25*1024)               #计算超出的流量,向上取整
money = MB*0.29+19                      #计算费用
print("本月账单为:","%.2f"%money,"元")

5.  编写程序满足如下需求:

定义一个整数n,计算该整数的12次方,并输出结果。

要求调用python内置函数进行次方计算

import sys
import math
???                         # 定义一个变量 值为8 
num = int(math.pow(???))    # 使用内置函数计算多次方
print("8的12次方是:",num)
import sys
import math
n = 8                         # 定义一个变量 值为8 
num = int(math.pow(n,12))     #使用内置函数计算多次方
print("8的12次方是:",num)

 6. 编写程序,定义一个整数年份,判断对应整数年份是否为闰年并输出结果,例如输入2018,返回“2018年不是闺年”,输入2000,返回“2000年是闺年”。

1) 闺年判定方法:能被400整除,或者被4整除,但不能被100整除;

2)使用format格式进行字符串格式化输出;

3) 结果参考上述示例,注意格式展示。

import sys
year = 2100

if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           ???  
       else:
           ??? 
   else:
       ???       
else:
    ???
import sys
year = 2100

if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           print("{}年是闰年".format(year))  
       else:
           print("{}年不是闰年".format(year)) 
   else:
       print("{}年是闰年".format(year))       
else:
    print("{}年不是闰年".format(year)) 

 7. 现有成绩分级,成绩小于60分为不及格,大于80分为优秀,其他为良好,要求根据学生成绩变量score为78分,打印成绩等级。

1) 使用变量score进行分数赋值:
2) 使用if判断进行程序编写:

score = 78
print(score,"分所在成绩等级为:",end="")

if score ??? :
    if score ??? :
        ???
    else:
        ???
else:
    ???

答案如下: 

score = 78
print(score,"分所在成绩等级为:",end="")

if score >=60 :
    if score <=80 :
        print(score,"分所在成绩等级为:良好",end="")
    else:
        print(score,"分所在成绩等级为:优秀",end="")
else:
    print(score,"分所在成绩等级为:不及格",end="")

8.区间求和

编程求和程序,要求根据输入的参数区间值a,b,计算两者之间的所有奇数之和。

(代码所需要填的空记不太清了...)

import sys
a = 384    # 前区间
b = 509    # 后区间

sum = 0
if a <= b :
    while a <= b:     
        if ???:  # 判断a是否为奇数
           ???   # 奇数相加 
        a += 1
    print("数据[",a,",",b,"]之间奇数之和为",???)        # 打印最后的奇数和
else :
    print("参数区间错误")   # 小在前大在后
import sys
a = 384   # 前区间
b = 509    # 后区间

sum = 0
if a <= b :
    while a <= b:     
        if a%2 == 1:  # 判断a是否为奇数
            sum = sum + a  # 奇数相加 
        a += 1
    print("数据[",a,",",b,"]之间奇数之和为",sum)        # 打印最后的奇数和
else :
    print("参数区间错误")   # 小在前大在后

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
亲爱的参赛选手们,各位领导、评委和观众朋友们,大家好!欢迎来到本次大学生互联网+大赛的校内选拔赛。我是今天的主持人C知道,非常荣幸能够为大家带来这场精彩的比赛。 首先,让我们对所有参赛选手表示热烈的欢迎和祝贺。你们是学校最优秀的青年创新创业者,你们的激情和智慧将在这里碰撞出火花,为我们带来无限的惊喜和感动。 本次校内选拔赛是大学生互联网+大赛的第一环节,也是决定你们是否能够进入决赛的关键之一。在这里,你们将通过项目展示和答辩环节展示自己的创新思维、团队协作能力和项目实施能力。同时,也将接受来自评委们的专业评判和意见指导。 在比赛过程中,我们将严格按照比赛规则和时间安排进行。请各位选手务必严格遵守比赛规程,确保比赛的公平公正。同时,也希望大家能够以积极的态度面对比赛中的挑战和困难,相信自己的实力,展现出最好的一面。 在接下来的比赛环节中,我们将邀请每个参赛团队上台进行项目展示。每个团队将有一定的时间来介绍自己的项目背景、创新点和市场前景。请各位选手充分准备,简明扼要地表达自己的想法和理念,向评委和观众展示出你们项目的价值和潜力。 项目展示结束后,将进入答辩环节。评委们将就每个项目提出问题和建议,希望能够更深入地了解你们的项目。请各位选手保持冷静、思维敏捷,在答辩中理性回答,展示出你们对项目的全面掌握和自信。 最后,我代表组委会再次对所有参赛选手表示祝贺和鼓励。无论最终结果如何,你们都是学校的骄傲和未来的希望。希望你们能够珍惜这次机会,充分展示自己的实力和才华。祝愿大家在比赛中取得优异的成绩! 谢谢大家!让我们共同期待这场比赛的精彩表现!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值