禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301
- 如果代码存在问题,麻烦大家指正 ~ ~
- 有帮助麻烦点个赞 ~ ~
Python第五章作业(初级)(1~6)
第1关:回文素数
任务描述
回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入一个正整数 n , 请你在一行内输出从小到大排列的的前n个回文素数,数字后面用一个空格进行分隔。
输入格式
输入一个正整数
输出格式
符合要求的回文素数
示例
输入:10
输出:2 3 5 7 11 101 131 151 181 191
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
from math import *
def prime(n):
for j in range(2, int(sqrt(n))+1):
if n%j==0:
return 0
return 1
x = int(input())
i = 0
n = 2
while i<x:
if str(n)==str(n)[::-1] and prime(n):
print(n, end=' ')
i+=1
n+=1
第2关:反素数
任务描述
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。
例如:
13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。
输入一个正整数 n , 请在同一行输出从小到大排列的的前n个反素数,每个数字后面加一个空格。
输入格式
输入一个正整数
输出格式
符合条件的反素数
示例
输入:
10
输出:
13 17 31 37 71 73 79 97 107 113
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
from math import*
def prime(n):
for j in range(2,int(sqrt(n))+1):
if n%j==0:
return 0
return 1
def reverse(m):
m1= int(m[::-1])
if str(m1)!=m and prime(m1):
return 1
return 0
x = int(input())
i, a = 0, 2
while i<x:
if prime(a) and reverse(str(a)):
print(a, end=' ')
i+=1
a+=1
第3关:哥德巴赫猜想
任务描述
1742年,哥德巴赫给欧拉的信中提出了以下猜想“任一大于2的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。比如:24=5+19,其中5和19都是素数。
输入一个正整数N,当输入为偶数时,分行按照格式“N = p + q”输出N的所有素数分解,其中p 、 q均为素数且p ≤ q。当输入为奇数或N<4时,输出’Data error!’ 。
输入格式
输入一个正整数
输出格式
当输入为偶数时,分行按照格式“N = p + q”输出N的所有素数分解,其中p 、 q均为素数且p ≤ q。当输入为奇数或N<4时,输出’Data error!’ 。
示例 1
输入:
30
输出:
30=7+23
30=11+19
30=13+17
示例 2
输入:
77
输出:
Data error!
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
#=======================================================
# 补充你的代码
if n<2:
return False
for i in range(2,n):
if n%i==0:
return False
else:
return True
#=======================================================
def goldbach_conjecture(num):
""" 哥德巴赫猜想, 接收一个不小于4的正整数为参数。
当参数为不小于4的偶数时,将其分解为两个素数的加和,按小数+数的格式输出。
有多种组合时全部输出,但不输出重复的组合,例如输出8=3+5,不输出8=5+3。
参数为奇数或小于4时,输出'Data error!'
"""
#=======================================================
# 补充你的代码
if num<4 or num%2!=0:
print('Data error!')
else:
for j in range(2,num):
if is_prime(j) and is_prime(num-j) and j<=(num-j):
print(f'{num}={j}+{(num-j)}')
#=======================================================
if __name__ == '__main__':
positive_even = int(input()) # 输入一个正数
goldbach_conjecture(positive_even)
第4关:货币转换
任务描述
编写一个美元与人民币转换的程序,用户输入金额和汇率(合理的汇率是正数),输出转换为另一种货币表示的金额。
美元:'$'
人民币:'¥'
货币标识可从上述描述中复制
输入格式
第一行输入一个以货币符号结尾的正数,数值作为金额,货币符号表明货币种类
第二行输入一个浮点数作为汇率
输出格式
输入符合要求时输出一个带货币符号的数值(保留2位小数)
输入不符合要求时输出Data error!
示例 1
输入:
58$
6.75
输出:
391.50¥
示例 2
输入:
100¥
6.85
输出:
14.60$
示例 3
输入:
58
6.75
输出:
Data error!
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
a = input().strip()
b = float(input())
if b<=0:
print('Data error!')
elif '$' in a:
c = eval(a[0:-1])*b
print(f'{c:.2f}¥ ')
elif '¥' in a:
c = int(a[0:-1])/b
print(f'{c:.2f}$')
else:
print('Data error!')
第5关:个人信息提取
任务描述
用户输入自己的个人信息,格式如下:
0122923450321 王昊 法学1801 河北 2001年
数据分别表示:学号 姓名 专业班级 籍贯 出生年份,各数据间空格间隔
有些用户没有按照规则输入数据,输入自己出生年份的时候写成了类似‘1900年生’或‘出生于1985’或‘19岁生于2006年11月’的数据格式
请注意程序仍然需要正确读取该项数据,本题保证这些用户输入时一定只含有1个4位数字连续组成的年份数据。
请按照输出样式输出姓名,班级,出生年份呢
提示:
列表中的数据和字符串当中的字符一样,都具有有序的索引,且引用数据和切片方式一致。
str.isdigit()
可以帮助判断字符串是否全部由数字字符组成,返回值为’True’或’False’
输入示例
0122923450321 王昊 法学1801 河北 2001年
输出示例
姓名:王昊
班级:法学1801
出生:2001年
示例
输入:
0122923450321 王昊 法学1801 河北 2001年
输出:
姓名:王昊
班级:法学1801
出生:2001年
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
a = input()
b = a.split(' ')
for i in range(1980, 2023):
if str(i) in b[4]:
break
print('姓名:' + b[1])
print('班级:' + b[2])
print('出生:' + str(i) + '年')
第6关:身份证号基本信息
任务描述
18位身份证号码第7-10位为出生年份(四位数),第11-12位为出生月份,第13-14位代表出生日期,第17位代表性别,奇数为男,偶数为女。 用户输入一个合法的身份证号,请输出用户的出生年月日和性别。(不要求较验输入的合法性)
输入格式
输入一个合法的身份证号字符串
输出格式
类似以下格式输出:
出生:1995年11月11日 性别:女
示例 1
输入:
110111199511111101
输出:
出生:1995年11月11日
性别:女
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134911113
a = input()
if a[16] in '02468x':
print(f'出生:{a[6:10]}年{a[10:12]}月{a[12:14]}日')
print('性别:女')
elif a[16] in '13579':
print(f'出生:{a[6:10]}年{a[10:12]}月{a[12:14]}日')
print('性别:男')