Python_大二(下)期末考试题库整理

第1题

  1. 绘制五星红旗
import turtle as t


t.setup(600, 400, 0, 0)  # 画布大小
t.bgcolor("red")    # 画布颜色
t.fillcolor("yellow")   # 填充颜色
t.color("yellow")   # 画笔颜色


def mygoto(x, y):
    t.up()
    t.goto(x, y)
    t.down()


def drawstar(l):
    t.begin_fill()
    for i in range(5):
        t.forward(l)    # 星星大小
        t.right(144)    # 设置角度
    t.end_fill()


mygoto(-260, 120)
drawstar(120)

t.left(45)
mygoto(-115, 150)
drawstar(35)

t.left(45)
mygoto(-75, 90)
drawstar(35)

t.left(45)
mygoto(-90, 35)
drawstar(35)

t.left(45)
mygoto(-120, -15)
drawstar(35)

第2题

  1. 用格式化字符串输出自我介绍
# 方式1
name = "刘星宇"
age = 21
height = 177.5
describe = "我的名字是\"刘星宇\"" + ",我今年" + str(age) + "岁,身高" + str(height) + "cm"
print(describe)

# 方式2
print("我的名字叫%(name)s,我今年%(age)d岁,身高%(height).2fcm"
      % {"name": "刘星宇", "age": 21, "height": 177.5})

第3题

  1. 利用turtle模块绘制三边形、四边形、五边形、六边形及圆,并为这些图形填充不同的颜色。
'''
FilePath: \PythonProject\期末考试\利用turtle模块绘制图形.py
Author: Liu Xingyu
Date: 2021-04-21
Version: 1.0
Contact: 18423475135@163.com
Descripttion注释/说明:  利用turtle模块绘制三边形、四边形、五边形、六边形及圆,并为这些图形填充不同的颜色
'''
import turtle as t

# 设置笔触
t.pensize(3)
# 隐藏笔触
t.hideturtle()

t.penup()
t.goto(-100, 50)
t.write("Cool Colorful Shapes",font=("Arial", 16))
t.pendown()
t.penup()
t.goto(-100, 100)
t.write("Blogs:www.Jaolvv.top",font=("Arial", 16))
t.pendown()

# 三角形
t.color("black")
t.fillcolor("red")
t.penup()
t.goto(-200, -50)
t.pendown()
t.begin_fill()
t.circle(40, steps=3)
t.end_fill()


# 四边形
t.color("black")
t.fillcolor("green")
t.penup()
t.goto(-100, -50)
t.pendown()
t.begin_fill()
t.circle(40, steps=4)
t.end_fill()


# 五边形
t.color("black")
t.fillcolor("blue")
t.penup()
t.goto(0, -50)
t.pendown()
t.begin_fill()
t.circle(40, steps=5)
t.end_fill()


# 六边形
t.color("black")
t.fillcolor("pink")
t.penup()
t.goto(100, -50)
t.pendown()
t.begin_fill()
t.circle(40, steps=6)
t.end_fill()


# 圆形
t.color("black")
t.fillcolor("purple")
t.penup()
t.goto(200, -50)
t.pendown()
t.begin_fill()
t.circle(40)
t.end_fill()

# 停止画笔绘制,但绘图窗体不关闭
t.done()

第4题

  1. 输出三角形的面积并画出三角形的形状及角度。

第5题

  1. 用format方法输出 九九乘法表。
for i in range(1, 10):
    for j in range(1, i+1):
        print("{}x{}={:<2}".format(j, i, i*j), end=" ")
    print(" ")

第6题

  1. 检查一个字符串是否是另一个字符串的子串,如是请输出该字符串是另一个字符串的子串,并输出其索引号,如不是请输出该字符串不是另一个字符串的子串。
def issubstring(first, second):
    remainingLength = len(second)
    startingIndex = 0;

    while len(first) <= remainingLength:
        if first != second[startingIndex: startingIndex + len(first)]:
            startingIndex += 1
            remainingLength -= 1
        else:
            return startingIndex

    return -1


for i in range(3):
    first = input("Enter the first string:").strip()
    second = input("Enter the second string:").strip()
    print(" ")
    index = issubstring(first, second)
    if index != -1:
        print("'" + first+ "'" + " is a substring of " + "'" + second + "'")
        print("The index of " + "'" + first+"'" + " in " + "'" + second + "'" + " is " + str(index))
        print(" ")
    else:
        print("'" + first + "'" + " is not a substring of " + "'" + second + "'")
        print(" ")

第7题

  1. 循环10次,每次分别产生两个100以内的随机整数,生成加法、减法、乘法算式,要求学生输入答案,并判断回答是否正确,统计正确个数。
import random

count = 0
# 循环十次
for i in range(10):
    a = int(random.randint(0, 100))  # 随机整数范围0~100
    b = int(random.randint(0, 100))

    # 交换变量,使大数始终在前面
    if a < b:
        b, a = a, b

    count_a = a + b  # 存放+正确的计算结果
    print(str(a) + ' + ' + str(b) + ' = ', end='')
    enter_a = eval(input())

    count_b = a - b  # 存放-正确的计算结果
    print(str(a) + ' - ' + str(b) + ' = ', end='')
    enter_b = eval(input())

    count_c = a * b  # 存放*正确的计算结果
    print(str(a) + ' * ' + str(b) + ' = ', end='')
    enter_c = eval(input())

    if count_a == enter_a:
        print(str(a) + ' + ' + str(b) + ' = ' + str(enter_a) + '√', end='' + " ")
        count += 1
    else:
        print(str(a) + ' + ' + str(b) + ' = ' + str(enter_a) + 'X', end='' + " ")

    if count_b == enter_b:
        print(str(a) + ' - ' + str(b) + ' = ' + str(enter_b) + '√', end='' + " ")
        count += 1
    else:
        print(str(a) + ' - ' + str(b) + ' = ' + str(enter_b) + 'X', end='' + " ")

    if count_c == enter_c:
        print(str(a) + ' * ' + str(b) + ' = ' + str(enter_c) + '√')
        count += 1
    else:
        print(str(a) + ' * ' + str(b) + ' = ' + str(enter_c) + 'X')

print("作答30次,答题正确: " + str(count) + "次")

第8题

  1. 编写程序找出在100 和 1000 之间所有被 5 和 6同时整除的数,每行显示10 个数。这些数被一个空格隔开 。
'''
FilePath: \PythonProject\期末考试\100到1000以内能同时被5和6整除的整数.py
Author: Liu Xingyu
Date: 2021-05-04
Version: 1.0
Contact: 18423475135@163.com
Descripttion注释/说明:  输出100到1000以内能同时被5和6整除的整数,一行输出10个数,左对齐
'''
i = 100  # 定义100到1000这个范围
count = 0  # 计数器
print("100到1000以内能同时被5和6整除的整数为:↓")
while i <= 1000:  # 定义100到1000这个范围
    if i % 5 == 0 and i % 6 == 0:  # 如果100和1000除以5和6等于0
        print("{:>4}".format(str(i)), end="")  # 格式化打印结果,{:>4}左对齐,强转i为字符串
        # 计十次换行
        count += 1
        if count % 10 == 0:
            print("")

    i += 1  # 自增到1000

第9题

  1. 编程显示在2和1000之间且包括 2 和 1000 的素数,每行显示10个素数。
numberof = 10
count = 0
number = 2

print("the 2 to 1000 prim numbers are:")
print()

while  number<=1000:
    isPrime = True
    divisor = 2
    while divisor <= number / 2:
        if  number % divisor==0:
            isPrime = False
            break
        divisor += 1
    if isPrime:
        count+=1
        print("{0:4}".format(number),end="")
        if count % numberof == 0:
            print()
    number += 1

第10题

  1. 编程显示在2和1000之间且包括 2 和 1000 的回文素数,每行显示10个素数。
def main():
    count =1        #count用来计数
    i=2     #素数累加
    while count<=100:       #100个数
        if isPrime(i):      #判断是否为素数
            if reverse(i):      #判断是否为回文数
                count+=1        #累加
                if count%10==1:     #10个
                    print()     #换行
        i+=1        #素数累加
def isPrime(number):        #函数isPrime
    for divisor in range(2,number//2+1):        #循环
        if number %divisor==0:      #判断
            return False
    return True
def isPalindrome(number):
    return number==reverse(number)
def reverse(number):
    result=0
    if str(number) == str(number)[::-1]:        #判断是否回文
        print("{0:6}".format(number), end="")       #输出
        result = 1
    return result
main()

第11题

  1. 编程求出所有三位数的水仙花数。
count = 0
print("所有三位数中的水仙花是:")
for i in range(100, 1000):
    a = i // 100
    b = (i - a * 100) // 10
    c = (i - a * 100 - b * 10)
    if i == pow(a, 3) + pow(b, 3) + pow(c, 3):
        print(i, end=" ")
        count += 1
print("共有%d个" % count)

第12题

  1. 编程找出两个数的最大公约数。
def hcf(x, y):
   """该函数返回两个数的最大公约数"""
 
   # 获取最小值
   if x > y:
       smaller = y
   else:
       smaller = x
 
   for i in range(1,smaller + 1):
       if((x % i == 0) and (y % i == 0)):
           hcf = i
 
   return hcf
 
 
# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
 
print( num1,"和", num2,"的最大公约数为", hcf(num1, num2))

第13题

  1. 编程找出三个数的最大公约数。
def main():
    a, b, c = eval(input())
    if a > b:
        t = a
        a = b
        b = t
    if a > c:
        t = a
        a = c
        c = t
    for i in range(a, 0, -1):
        if(a % i == 0 and b % i == 0 and c % i == 0):
            print("最大公约数为", i)
            break
main()

第14题

  1. 编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。编写一个函数sumDigits(n)计算一个整数各个数字的和。
print("Enter a NUMBER:")

def sumDigits(n):
    s = 0
    while n:
        s = n % 10 + s
        n = n // 10
    print(s)


sumDigits(eval(input()))

第15题

  1. 编写程序显示从2开始的50个素数,每行显示10个素数。
def isPrime(number):
    for divisor in range(2, number // 2+1):
        if number % divisor == 0:
            return False
    return True


def printPrimeNumber(numberOfPrime):
    NUMBER_OF_PRIMES_PER_LINE = 10
    count = 0
    number = 2
    while count < numberOfPrime:
        if isPrime(number):
            count += 1
            print("{0:4}".format(number), end="")
            if count % NUMBER_OF_PRIMES_PER_LINE == 0:
                print()
        number += 1


def main():
    print("The first 50 prime numbers are :")
    printPrimeNumber(50)
main()

第16题

  1. 提示用户输入一个数n然后调用 displayPattern(n)来显示这种模式。

第17题

  1. 编写程序显示从2开始的100个回文素数。每行显示10个数字,并且准确对齐。
'''
FilePath: \PythonProject\回文素数.py
Author: Liu Xingyu
Date: 2021-04-23
Version: 1.0
Contact: 18423475135@163.com
Descripttion注释/说明:  
    编写程序显示从2开始的100个回文素数。每行显示10个数字,并且准确对齐
    声明并调用函数
'''


# 取反
def returnValue(i):
    strj = ""
    while(i > 0):
        strj += str(i % 10)
        i = i // 10
    return strj


# 判断是否回文数
def judgment(i):
    result = int(returnValue(i))
    if(i == result):
        return True
    else:
        return False


# 判断是否素数
def numberOfJudgments(i):
    j = 2
    while(j <= i):
        if(i % j == 0 and i != j):
            return False
        elif(i == j):
            return True
        j += 1


def main():
    count = 0
    # 编写程序显示从2开始的100个回文素数。每行显示10个数字,并且准确对齐
    for i in range(2, 100000):
        if(judgment(i)):  # 判断回文
            if(numberOfJudgments(i)):  # 判断素数
                print("{:^5}".format(i), end="  ")  # 格式化输出
                count += 1  # 计数器
                if(count % 10 == 0):  # 每10个换一行
                    print("")
                if(count == 100):  # 有一百个了就退出
                    break


main()

第18题

  1. 编写程序读取未指定个数的分数,然后决定多少个分数是大于等于平均分数,而多少个是低于平均分数的。假设输入数是在一行由空格分隔的。

第19题

  1. 编写一个测试程序,提示用户输入一个数字列表,调用函数indexOfSmallestElement,返回最小元素的下标,显示这个下标。

第20题

  1. 编写一个测试程序,提示用户输入一个数字列表,调用函数indexOfMaxElement,返回最大元素的下标,显示这个下标。

第21题

  1. 编写一个测试程序,读取 10个数字,调用函数selectionSort排序,然后显示排好序的数字(按升序或降序)

第22题

  1. 编写一个测试程序,读取 10个数字,调用函数bubbleSort排序,然后显示排好序的数字(按升序或降序)

posted @ 2021-04-21 12:26  焦虑烧麦  阅读(910)  评论(1)    收藏  举报