PTA Python程序设计-04

本文介绍了如何用Python解决一系列技术问题,包括:缩写词生成、多项式值计算、素数和求和、浮点数转二进制以及查找回文素数。通过实例展示了acronym、polyvalue、prime和相关函数的实现以及dec2bin和isPrime/reverseNumber函数的配合应用。
摘要由CSDN通过智能技术生成

python题目集,源于学校老师布置在pta上的题目,博主用来复习的

6-1 缩写词

缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。

函数接口定义:

acronym(phrase);

phrase是短语参数,返回短语的缩写词

裁判测试程序样例:

/* 请在这里填写答案 */
phrase=input()
print(acronym(phrase))

输入样例:

central processing unit

输出样例:

CPU

思路:

输入的字符串使用upper()全部转为大写形式,再使用split()按空格分割;
for循环,取分割后每个字符串下标为0的字符拼接,最后返回

代码:

def acronym(phrase):
    phrase = phrase.upper().split()
    res = ""
    for i in range(len(phrase)):
        x = phrase[i][0]
        res += x
    return res

6-2 求多项式的值

一元多项式可以用列表表示。如p(x)=1+3x+9 x 4 x^4 x4
,可以表示成列表[1,3,0,0,9]。输入列表表示的多项式和x的值,求多项式的值。

函数接口定义:

在这里描述函数接口。例如:
value(lst,x)
lst表示多项式,x代表具体的值。

裁判测试程序样例:

/* 请在这里填写答案 */
lst=eval(input())
y=float(input())
print(“{:.1f}”.format(polyvalue(lst,y)))

输入样例:

在这里给出一组输入。例如:
[1,3,0,0,9]
1

输出样例:

在这里给出相应的输出。例如:
13.0

思路:

按题意模拟

代码:

def polyvalue(lst, y):
    res = 0
    for i in range(len(lst)):
        res += lst[i] * (y ** i)

    return res

6-3 使用函数求素数和

使用函数求素数和

prime§, 其中函数prime当用户传入参数p为素数时返回True,否则返回False.
PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n。

函数接口定义:

在这里描述函数接口:
prime§,返回True表示p是素数,返回False表示p不是素数
PrimeSum(m,n),函数返回素数和

裁判测试程序样例:

/* 请在这里填写答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))

输入样例:

在这里给出一组输入。例如:
1 10

输出样例:

在这里给出相应的输出。例如:
17

思路:

注意点:判断素数的时候,注意值为1和2的情况

代码:

def prime(p):
    if p == 1: return False
    if p == 2: return True
    for i in range(2, p):
        if p % i == 0:
            return False
    return True


def PrimeSum(m,n):
    res = 0
    for i in range(m, n+1):
        if prime(i):
            res += i
    return res

6-4 浮点数的十进制转二进制

本题要求实现一个函数,将十进制浮点数转换成二进制浮点数(只考虑正数),例如:十进制浮点数0.2转换为二进制浮点数为:0b0.001100110011001100110011001100110011001100110011001101。

转换规则如下:

整数部分采用“除2取余,逆向取值”的方法;
小数部分则乘2取整,直到余下的小数为0或者满足精度要求为止,然后顺序取值(即最先得到的整数为最高位,最后得到的整数为最低位)。
例如:
在这里插入图片描述

10-2.webp
所以,最终结果就是:11 1010.101。

函数接口定义:

def dec2bin(dec_num):

其中 dec_num 是用户传入的十进制浮点数,返回对应的二进制浮点数字符串。

裁判测试程序样例:

/* 你的代码将被嵌在这里 */
if name == ‘main’:
dec_num = eval(input())
bin_num = dec2bin(dec_num)
print(bin_num)

输入样例:

在这里给出一组输入。例如:
0.1

输出样例:

在这里给出相应的输出。例如:
0b0.0001100110011001100110011001100110011001100110011001101

思路:

整数和小数分开计算;
整数部分可以使用bin(),直接得到整数的二进制形式
小数部分需要不断*2, 取其整数值,直到小数点后值为0时停止

代码:

def dec2bin(dec_num):
    res = ""
    integer = int(dec_num)
    res += bin(integer)
    if integer == dec_num:
        return res
    decimal = dec_num - integer

    res += "."
    while(True):
        if decimal == 0:
            break
        else:
            x = decimal * 2
            res += str(int(x))
            decimal = x - int(x)
    return res

6-5 打印指定范围内的全部回文素数

回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数。请实现下述两个函数,帮助测试程序完成如下功能:从键盘输入正整数N, 打印从1 ~ N(包含N)的全部回文素数,一行一个。

函数接口定义:

def isPrime(num):
def reverseNumber(num):

isPrime()用于判断整数num是否是素数,是返回True, 否则返回False.
reverseNumber()用于返回整数num的反向数,321的反向数为123, 320的反向数为23。

裁判测试程序样例:

N = int(input())
for n in range(1,N+1):
if isPrime(n) and reverseNumber(n) == n:
print(n)

输入样例:

400

输出样例:

2
3
5
7
11
101
131
151
181
191
313
353
373
383

思路:

判断素数部分注意1和2两个值
反向数部分,不能直接使用reversed(),因为320的反向数为23;采用不断%10、/10的方法得到每一位的数,再通过原res*10 + 新一位的数得到新res的值

代码:

def isPrime(num):
    if num == 1:
        return False
    elif num == 2:
        return True
    else:
        for i in range(2, num):
            if num % i == 0:
                return False
        return True


def reverseNumber(num):
    res = 0
    while True:
        if int(num) == 0:
            break
        res = res * 10 + (int(num % 10))
        num = int(num / 10)
    return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值