青少年蓝桥杯模拟题——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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值