函数
题目描述
小红打车,起步价8元(3公里), 每公里收费 2 元,她打车行驶了 n 公里,通过函数封装并计算车费
输入描述
输入一个公里数
输出描述
输出应付车费
示例
输入:
5
输出:
12
try: def taxi(n:float): if n<=3: return 8 else: return (n-3)*2+8 n=float(input("请输入公里数:")) print("支付金额为:",taxi(n)) except: print("输入错误,请重新输入!")
题目描述
读取一个0到1000之间的整数,并计算它各位数字之和
输入输出描述
输入一个[0,1000]之间的整数
输出该数字的各位数字之和
提示
需要使用内置函数 len() 或者 for循环
示例1
输入:
999
输出:
27
解释:
999各位数之和为9 + 9 + 9 = 27
try: def superimposing(n:int): sum=0 #整型不能直接转换成列表,list可将字符串转换成列表 n=str(n) n_list=list(n) for i in range(len(n_list)) : #一定是n_list[i],方括号 sum+=int(n_list[i]) return sum n=int(input("请输入数字(1~1000):")) print("数字叠加为:",superimposing(n)) except: print("输入错误,请重新输入!")
题目描述
输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天
输入描述
输入一个分钟数
输出描述
输出两行,第一行为年数,第二行为天数
示例
输入:
1000000000
输出:
1902
214
try: def years(n:float): return (n/60/24/365) def days(n:float): return (n/60/24) n=float(input("输入分钟数:")) print("年数为:%.0f" % years(n)) print("天数为:%.0f" % days(n)) except: print("输入错误,请重新输入!")
题目描述
回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数
输出显示前100个回文素数,每行显示10个
示例
2 3 5 7 11 101 131 151 181 191
import math from itertools import count def prime(n:int): for i in range(2,int(math.sqrt(n)+1)): if (n%i==0): return False return True def Palindrome(n:int): n=str(n) lenth=len(n) for i in range(lenth//2): if (n[i]!=n[lenth-1-i]): return False return True count=0 for i in range(2,100000): if prime(i) and Palindrome(i): print(str(i)+" ",end="") count+=1 if(count%10==0): print() if(count>=100): break
题目描述
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数
输出显示前100个反素数,每行显示10个
import math def prime(n:int): for i in range(2,int(math.sqrt(n)+1)): if (n%i==0): return False return True def Palindrome(n:int): n=str(n) lenth=len(n) for i in range(lenth//2): if (n[i]!=n[lenth-1-i]): return False return True count=0 for i in range(1,100000): if prime(i) and not Palindrome(i): print(str(i)+" ", end='') count+=1 if(count%10==0): print() if count>=100: break
题目描述
双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数
输出显示小于1000的双素数
import math def prime(n:int): for i in range(2,int(math.sqrt(n))+1): if (n%i==0): return False return True for i in range(2,1000): if prime(i) and prime(i+2): print(str(i)+" "+str(i+2))
如果一个素数可以写成$2^p-1$的形式,其中p是某个正整数,那么这个素数就称作梅森素数
输出p≤31的所有梅森素数
import math def prime(n:int): if n<=1: return False for i in range(2,int(math.sqrt(n))+1): if (n%i==0): return False return True for p in range(1,32): #中间变量x x=2**p-1 if prime(x): print(x)
题目描述
现有堆叠相加模式$a+aa+aaa+aaaa+aaaaa+......$
例如:$2+22+222+2222+22222$,其中a为2,且有5组数字
输入输出描述
输入两个数据分别为数字a和组数n
输出按照堆叠相加模式算出的和
示例
输入:
3 4
输出:
3702
解释:
3 + 33 + 333 + 3333 = 3702
def Stacked_addition(a:int,n:int): sum=0 y=0 for i in range(1,n+1): #中间变量x,y x=10**(i-1)*a y+=x sum+=y return sum a=int(input("输入数字a:")) n=int(input("输入组数n:")) print(Stacked_addition(a,n))
题目描述
一些网站会给密码强加一些规则:
(1)密码必须至少有8个字符
(2)密码只能包含英文字母和数字
(3)密码应该至少包含两个数字
(4)密码应该至少包含两个大写字母
如果密码符合规则,输出Yes;否则输出No
输入输出描述
输入一串密码
输出该密码是否符合规则
示例1
输入:
123456ab
输出:
No
示例2
输入:
123abcABC
输出:
Yes
def code(n:str): capital = 0 digital = 0 for i in range(len(n)): x = ord(n[i]) if(48>x or 57122): return False if(65<=x<=90): capital+=1 if(48<=x<=57): digital+=1 if i<7: return False if capital<2: return False if digital<2: return False return True password=input(str("请输入密码:")) if code(password): print("yes") else: print("no")
题目描述
读入学生成绩,获取最高分best,然后根据下面的规则赋等级值:
(1)如果分数≥best-10,等级为A
(2)如果分数≥best-20,等级为B
(3)如果分数≥best-30,等级为C
(4)如果分数≥best-40,等级为D
(5)其他情况,等级为F
输入输出描述
输入两行,第一行输入学生人数n,第二行输入n个学生的成绩
输入n行,表示每个学生的成绩等级
示例
输入:
4
40 55 70 58
输出:
学生0分数为40,等级为C
学生1分数为55,等级为B
学生2分数为70,等级为A
学生3分数为58,等级为B
def grade(n:int,list:list): #处理所有学生的成绩并返回 best=max(list) #.append 在模块的末尾增加数据,先声明一个空列表 results=[] for i in range(len(list)): if list[i]>=(best - 10): results.append("学生"+str(i)+"的分数为"+str(list[i])+",等级为A") elif (best-20)<=list[i]<(best-10): results.append("学生" + str(i) + "的分数为" + str(list[i]) + ",等级为B") elif (best-30)<=list[i]<(best-20): results.append("学生" + str(i) + "的分数为" + str(list[i]) + ",等级为C") elif (best-40)<=list[i]<(best-30): results.append("学生" + str(i) + "的分数为" + str(list[i]) + ",等级为D") else: results.append("学生" + str(i) + "的分数为" + str(list[i]) + ",等级为F") return results n=int(input("输入学生人数:")) list=list(map(int,input("请输入学生成绩:").split())) print(grade(n,list))
题目描述
斐波那契数列是一种特殊的数列,很多生活和企业场景中都能见到满足该数列的数据排列方式;现在要求你封装一个用于获取斐波那契数列数据的功能函数,用于底层数据支持;
输入描述
输入一个整数n
输出描述
输出位置为n的斐波那契数列对应的数据
示例
输入:1
输出:1
输入:3
输出:2
输入:8
输出:21
import math def Porfinacci(n:int): if n>0: return (1/math.sqrt(5))*(((1+math.sqrt(5))/2)**n-((1-math.sqrt(5))/2)**n) n=int(input("请输入数据:")) print("%.0f" %Porfinacci(n))
题目描述
按照用户输入密码的字符,判断用户的密码强度,基本要求如下
弱:都是数字,或者都是大写字母/小写字母组成的密码
中等:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母] 或者 [大小写字母、数字]组成的密码
强:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母]并结合特殊符号组成的密码
输入描述
用户输入一个字符串密码
输出描述
输出密码强度等级
示例
输入:abcdef
输出:弱密码
输入:abc123
输出:中等强度
输入:Abc123%
输出:强密码
import string def code_strength(code: str): # 检查密码中是否包含数字 has_digit = any(char.isdigit() for char in code) # 检查密码中是否包含大写字母 has_upper = any(char.isupper() for char in code) # 检查密码中是否包含小写字母 has_lower = any(char.islower() for char in code) # 检查密码中是否包含特殊符号 has_special = any(char in string.punctuation for char in code) # 根据条件判断密码强度 if has_digit and has_upper and has_lower and has_special: return "强密码" elif (has_digit and has_upper) or (has_digit and has_lower) or (has_upper and has_lower): return "中等强度" elif has_lower or has_upper or has_digit: # 这里不需要 has_special,因为密码至少包含字母或数字 return "弱密码" else: return "未知强度" # 用户输入密码 code = input("请输入密码:") # 输出密码强度 print(code_strength(code))
题目描述
编写一个函数,实现密码的错位加密
编写一个函数,实现密码的错位解密
输入描述
输入一个字符串明文密码;
输入一个字符串密文数据;
输出描述
打印展示加密后的字符串密文
打印展示解密后的明文字符串
示例
输入:
abc # 明文
def # 密文
输出:
cde # 错位密文(具体错位可以自定义)
cde # 解密明文(具体错位可以自定义)
代码实现
下面代码已经实现了基本功能,但是存在BUG(请找出并修正它)
def encrypt(password, n=4): """加密函数""" ep = "" for i in str(password): ac = ord(i) ac += n _ac = chr(ac) ep += _ac return ep def decrypt(password, n=4): """解密函数""" pwd = "" for i in str(password): ac = ord(i) ac -= n _ac = chr(ac) pwd += _ac return pwd pd = input("请输入明文数据:") print("加密后的数据:", encrypt(pd, 5)) pd2 = input("请输入密文数据:") print("解密后的数据:", decrypt(pd2, 5))
def encryption(passwd:str,n:int): en="" for i in str(passwd): #x _x为中间变量 x=ord(i) x=x+n if x>126: x=x%126+33 _x=chr(x) en+=_x return en passwd=input("请输入明文数据:") n=int(input("移动位数为:")) print("加密后为:",encryption(passwd,n))