青少年蓝桥杯模拟题——python
1.选择题(答案在末尾)
1、Python中定义函数的关键字是( ).
A、class B、import C、def D、while
2、Python中可以创建空字典的是( )。
A、dic=( ) B、dic={ } C、dic=set( ) D、dic=[ ]
3、已知:s='pythonnohtyp', 执行print(s.index('h')+s.rindex('n'))语句后, 输出的结果是( )。
A、-2 B、-3 C、9 D、11
str.rindex(str, beg=0 end=len(string))。返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常。
str.index(substring, beg=0, end=len(string))。如果包含子字符串返回开始的索引值,否则抛出异常。
4、己知a=2021.0529,运行一下代码选项可以输出"2021.05”( )
A.print("(2f)".format(a))
B.print("{:.2f}".format(a))
C.print("[2]".format(a))
D.print("{.2f}".format(a))
这里考察的是格式化输出Python format 格式化函数 | 菜鸟教程:基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
>>> print("{:.2f}".format(3.1415926))
3.14
5、已知pi=3.1415926,运行print(round(pi),round(pi,2),输出结果是( )
A、3 3.14
B、2 4
C、3 6.18
D、3.14 3
round(x [,n]) |
返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
6、以下哪项是取余运算符?( )
A、* B、∥ C、% D、+
7、Python中的列表和元组的描述正确的是( )。
A、列表中元素的值可修改,元组中元素的值不可修改
B、列表是有序的,元组是无序的
C、列表是一维的,元组可以是多维的
D、列表可以包含不同类型的元素,元组只能包含相同类型的元素
8、下列方法中,哪一个可以随机生成一个实数( )。
A、random()
B、randrange() 从 range(start, stop, step) 返回一个随机选择的元素
C、getrandbits() getrandbits(k) 返回具有 k 个随机比特位的非负 Python 整数
D、randint() randint(start, stop) 返回指定范围内的整数
9. 运行以下程序,输出的结果是( )。
D= {'Beijing':'China','Washington':'America','Ottawa':'Canadian'}
print(max(d),min(d))
A、Vashington Ottawa
B、Canadian China
C、America China
D、Washington Beijing
max(dict_data) # 返回字典中key最大的项,返回值为key。
10.如果p=ord('b'),运行print(p,chr(p+3)%26+p)语句,输出的结果是( )。
A、66 D
B、66 S
C、98 y
D、98 e
ord()用于表示某个字符的ASCII码值;chr()表示将ASCII码值转为对应的字符。
2.编程题
第一题:
weight = float(input("请输入您的体重(Kg): "))
height = float(input("请输入您的身高(m): "))
bmi = round(weight / (height ** 2), 1)
if bmi < 18.5:
category= "过轻"
elif 18.5 <= bmi <= 23.9:
category= "正常"
elif 24 <= bmi <= 26.9:
category= "过重"
elif 27 <= bmi <= 32:
category= "肥胖"
else:
category= "非常肥胖"
print(f"\n您的BMI指数为:{bmi}")
print("您的体重情况:")
print(category)
def calculate_bmi(weight, height):
return round(weight / (height ** 2), 1)
def bmi_category(bmi):
if bmi < 18.5:
return "过轻"
elif 18.5 <= bmi <= 23.9:
return "正常"
elif 24 <= bmi <= 26.9:
return "过重"
elif 27 <= bmi <= 32:
return "肥胖"
else:
return "非常肥胖"
def main():
try:
weight = float(input("请输入您的体重(Kg): "))
height = float(input("请输入您的身高(m): "))
bmi = calculate_bmi(weight, height)
category = bmi_category(bmi)
print(f"\n您的BMI指数为:{bmi}")
print("您的体重情况:")
print(category)
except ValueError:
print("输入的值无效,请确保输入的是数字格式。")
if __name__ == "__main__":
main()
第二题:
letters = 0
spaces = 0
digits = 0
others = 0
string = input("请输入一行字符: ") #这里不需要提醒
for char in string:
if char.isalpha():
letters += 1
elif char.isspace():
spaces += 1
elif char.isdigit():
digits += 1
else:
others += 1
print(f"英文字母: {letters}") #这里输出不需要注释
print(f"空格: {spaces}")
print(f"数字: {digits}")
print(f"其它字符: {others}")
def count_characters(s):
letters = 0
spaces = 0
digits = 0
others = 0
for char in s:
if char.isalpha():
letters += 1
elif char.isspace():
spaces += 1
elif char.isdigit():
digits += 1
else:
others += 1
return letters, spaces, digits, others
def main():
input_string = input("请输入一行字符: ")
letters, spaces, digits, others = count_characters(input_string)
print(f"英文字母: {letters}")
print(f"空格: {spaces}")
print(f"数字: {digits}")
print(f"其它字符: {others}")
if __name__ == "__main__":
main()
第三题:学会用eval(input())进行多输入,这里要用“,“隔开。
如果使用空格或者其他符号隔开输入就要用到map(type,input().split())
import math
# 输入分数
nums = eval(input())
numerator, denominator = nums
# 显示输入的分数
print(f"{numerator}/{denominator}")
gcd = math.gcd(numerator, denominator)
simplified_numerator = numerator // gcd
simplified_denominator = denominator // gcd
# 显示约分后的最简分数
if simplified_denominator == 1:
print(str(simplified_numerator))
else:
print(f"{simplified_numerator}/{simplified_denominator}")
import math
def simplify_fraction(numerator, denominator):
gcd = math.gcd(numerator, denominator)
simplified_numerator = numerator // gcd
simplified_denominator = denominator // gcd
if simplified_denominator == 1:
return str(simplified_numerator)
else:
return f"{simplified_numerator}/{simplified_denominator}"
def main():
# 输入分数
input_str = input("请输入两个正整数(以逗号分隔)分别作为分数的分子和分母: ")
nums = eval(input_str)
numerator, denominator = nums
# 显示输入的分数
print(f"{numerator}/{denominator}")
# 显示约分后的最简分数
simplified_fraction = simplify_fraction(numerator, denominator)
print(simplified_fraction)
if __name__ == "__main__":
main()
第四题:考察的递归函数。视频链接分形树
这是第一层就有两个分支
import turtle
def draw_branch(branch_length, level):
if level == 0:
return
# 绘制当前层的树枝
turtle.forward(branch_length)
# 绘制左分支
turtle.left(30)
draw_branch(branch_length - 6, level - 1)
turtle.right(30)
# 绘制右分支
turtle.right(30)
draw_branch(branch_length - 6, level - 1)
turtle.left(30)
# 返回到当前层的起点
turtle.backward(branch_length)
def main():
turtle.speed(1) # 设置绘图速度
turtle.left(90) # 设置初始方向为向上
# 绘制第1层左分支
turtle.left(30)
draw_branch(60, 4) # 第1层开始,长度为60,递归4层
turtle.right(30)
# 回到主干并绘制第1层右分支
turtle.right(30)
draw_branch(60, 4) # 第1层开始,长度为60,递归4层
turtle.left(30)
turtle.hideturtle()
turtle.done()
if __name__ == "__main__":
main()
这是第一层只有一个分支,结果如下
import turtle
def draw_branch(branch_length, level):
if level == 0:
return
turtle.forward(branch_length)
# 左分支
turtle.left(30)
draw_branch(branch_length - 6, level - 1)
turtle.right(30)
# 右分支
turtle.right(30)
draw_branch(branch_length - 6, level - 1)
turtle.left(30)
turtle.backward(branch_length)
def main():
turtle.speed(1) # 设置绘图速度
turtle.left(90) # 设置初始方向为向上
turtle.up()
turtle.backward(100) # 向下移动起点位置
turtle.down()
draw_branch(60, 4) # 绘制分形树
turtle.hideturtle()
turtle.done()
if __name__ == "__main__":
main()
第五题:
def days_to_complete(a, b, n):
# 每周的题目总数
weekly_total = 5 * a + 2 * b
# 完整的周数
full_weeks = n // weekly_total
# 剩余需要完成的题目数
remaining = n % weekly_total
# 初始化天数
days = full_weeks * 7
# 在不完整的一周中计算天数
for i in range(7):
if i < 5:
remaining -= a
else:
remaining -= b
days += 1
if remaining <= 0:
break
return days
# 读取输入
a, b, n = map(int, input().split())
# 输出结果
print(days_to_complete(a, b, n))
第六题:视频链接:python打印杨辉三角形
def generate_pascals_triangle(n):
triangle = [[1]]
for i in range(1, n):
row = [1]
for j in range(1, i):
row.append(triangle[i-1][j-1] + triangle[i-1][j])
row.append(1)
triangle.append(row)
return triangle
def print_pascals_triangle(triangle):
max_width = len(triangle[-1]) * 4 # 增加每个数字之间的间隔
for row in triangle:
print(''.join('{:<4}'.format(num) for num in row).center(max_width))
def main():
# 读取输入
n = int(input("请输入一个正整数 (2≤n≤15): "))
if 2 <= n <= 15:
triangle = generate_pascals_triangle(n)
# 输出列表形式
print("第一部分输出:")
for row in triangle:
print(row)
# 输出杨辉三角形形式
print("第二部分输出:")
print_pascals_triangle(triangle)
else:
print("输入不在范围内。")
if __name__ == "__main__":
main()
选择题答案:CBCBACAADC
作者:小芋头的初码农