当前位置: 首页 > news >正文

python函数连续

基础练习

练习目标

函数

01.计算车费

题目描述

小红打车,起步价8元(3公里), 每公里收费 2 元,她打车行驶了 n 公里,通过函数封装并计算车费

输入描述

输入一个公里数

输出描述

输出应付车费

示例

输入:

5

输出:

12

#定义函数体 输入一个变量
def cost(num):
#判断公里数大于3的情况if num > 3:cost = 8 + 2 * (num - 3)
#判断小于等于3的情况else:cost = 8
#返回一个结果return cost
​
#输入参数
km = int(input("输入一个数字"))
#使用函数
cost_end = cost(km)
#打印结果
print(cost_end)

02.整数叠加

题目描述

读取一个0到1000之间的整数,并计算它各位数字之和

输入输出描述

输入一个[0,1000]之间的整数

输出该数字的各位数字之和

提示

需要使用内置函数 len() 或者 for循环

示例1

输入:

999

输出:

27

解释:

999各位数之和为9 + 9 + 9 = 27

#定义函数
def sum_of_digits(n):#判断数字范围if 0 <= n <= 1000:num = 0#将n转化为字符串一个一个打印for digit in str(n):#转化类型使数据可以用于加法运算digit = int(digit)#将数据加起来num += digitreturn numelse:return "输入的数字不在[0,1000]范围内"
​
#填写参数
num = int(input("输入一个数字"))
#调用函数
num_end = sum_of_digits(num)
#打印函数结果
print(num_end)

03.时间拆分

题目描述

输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天

输入描述

输入一个分钟数

输出描述

输出两行,第一行为年数,第二行为天数

示例

输入:

1000000000

输出:

1902

214

#该函数可以将分钟转化为天数(整除)
def minutes_to_days(minutes):return minutes // (24 * 60)
​
#该函数将天数转化为年数(整除)
def days_to_years(days):years = days // 365return years
​
#该函数计算整除年后的剩余天数
def days_to_remaining_days(days):remaining_days = days % 365return remaining_days
​
#添加参数
minutes = int(input("输入分钟数"))
#计算天数
days = minutes_to_days(minutes)
#计算年数
years = days_to_years(days)
#除去年数后剩余天数
remaining_days = days_to_remaining_days(days)
​
print(f"年数: {years}")
print(f"剩余天数: {remaining_days}")

04.回文素数

题目描述

回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数

输出显示前100个回文素数,每行显示10个

示例

2 3 5 7 11 101 131 151 181 191

#用于函数用于判断素数
def sushu(num):if num <= 1:return Falsefor i in range(2, num):if num % i == 0:return Falsereturn True
​
#用于判断回数
def huiwe(num):str_num = str(abs(num))return str_num == str_num[::-1]
​
#添加一个数组
nums = []
#初定义数据
num = 2
#计算数组长度 数组大于100自动停止入循环
while len(nums) <100:if sushu(num):if huiwe(num):#将num加入nums数组nums.append(num)num += 1
​
#该数组用于计数
nums_end = []
for i in nums:print(i,end=" ")nums_end.append(i)#nums_end内部数据大于10就换行if len(nums_end) % 10 == 0:print("")

05.反素数

题目描述

反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数

输出显示前100个反素数,每行显示10个

#用于函数用于判断素数
def sushu(num):if num <= 1:return Falsefor i in range(2, num):if num % i == 0:return Falsereturn True
#用于函数用于判断回文数
def huiwe(num):str_num = str(abs(num))return str_num == str_num[::-1]
​
#添加一个数组
nums = []
#初定义数据
num = 2
#为数组添加数据
while len(nums) <100:if sushu(num) and huiwe(num):nums.append(num)num += 1
#满足打印条件
nums_end = []
for i in nums:print(i,end=" ")nums_end.append(i)if len(nums_end) % 10 == 0:print("")

06.双素数

题目描述

双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数

输出显示小于1000的双素数

#用于函数用于判断素数
def sushu(num):if num <= 1:return Falsefor i in range(2, num):if num % i == 0:return Falsereturn True
​
​
​
num = 2
while num < 1000:
#判断条件if sushu(num) and sushu(num+2):print(num,num+2)num += 1

07.梅森素数

如果一个素数可以写成$2^p-1$的形式,其中p是某个正整数,那么这个素数就称作梅森素数

输出p≤31的所有梅森素数

#用于函数用于判断素数
def sushu(num):if num <= 1:return Falsefor i in range(2, num):if num % i == 0:return Falsereturn True
​
p = []
​
num = 2
#条件为数字小于31
while num <= 31:if sushu(num):#将遍历的数据加入数组pp.append(num)num += 1
mei_suhui = []
for i in p:nums = 2 * i * i -1#进行判定 成功就加入数组if sushu(nums):mei_suhui.append(i)
print(mei_suhui)

08.堆叠相加

题目描述

现有堆叠相加模式$a+aa+aaa+aaaa+aaaaa+......$

例如:$2+22+222+2222+22222$,其中a为2,且有5组数字

输入输出描述

输入两个数据分别为数字a和组数n

输出按照堆叠相加模式算出的和

示例

输入:

3 4

输出:

3702

解释:

3 + 33 + 333 + 3333 = 3702

#输入两个数据
def all_sum(n1,n2):
#对num进行数据初始化num = n1sums = 0nums = []#n2为组数while len(nums) != n2:#sums为相加的最终数据sums += num#加入数组判定循环条件nums.append(num)#每一次变化numnum = num * 10 + n1return sums
​
#输入数据
a = int(input("数字="))
n = int(input("组数="))
​
#打印数据
print(all_sum(a,n))

09.检测密码

题目描述

一些网站会给密码强加一些规则:

(1)密码必须至少有8个字符

(2)密码只能包含英文字母和数字

(3)密码应该至少包含两个数字

(4)密码应该至少包含两个大写字母

如果密码符合规则,输出Yes;否则输出No

输入输出描述

输入一串密码

输出该密码是否符合规则

示例1

输入:

123456ab

输出:

No

示例2

输入:

123abcABC

输出:

Yes

#判断数据长度
def ture_len(n1):if len(n1) >= 8:return Trueelse:return False
​
#判断字母是否符合标准
def ture_include(n1):for i in n1:#将数据转换为ascll的数字if 65 <= ord(i) <= 90 or 97 <= ord(i) <= 122 or 48 <= ord(i) <= 57:return Trueelse:return False
#判断设否满足数字条件
def ture_math(n1):num = []for i in n1:#将数据转换为ascll的数字if 48 <= ord(i) <= 57:num.append(i)if len(num) < 2:return Falseelse:return True
#判断设否满足英文字母条件
def ture_english(n1):num = []for i in n1:#将数据转换为ascll的数字if 65 <= ord(i) <= 90:num.append(i)#判断字符长度if len(num) < 2:return Falseelse:return True
​
password = input("输入密码:")
#判断是否满足条件
if ture_len(password):if ture_include(password):if ture_math(password):if ture_english(password):print("yes")else:print("no")else:print("no")else:print("no")
else:print("no")

10.指定等级

题目描述

读入学生成绩,获取最高分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

n = input("输入学生人数:")
grade = []
​
#map函数让输入函数变成int .split以空格分开 可以多次输入
grade = list(map(int , input("输入成绩:").split(" ")))
​
o = 0
​
#对内部数据进行遍历 对结果进行判断
for i in grade:a = max(grade)if i <= max(grade) - 40:print(f"学生{o}分数为{i},等级为D")elif max(grade) - 30 <= i <= max(grade) - 20:print(f"学生{o}分数为{i},等级为C")elif max(grade) - 20 <= i <= max(grade) - 10:print(f"学生{o}分数为{i},等级为B")elif max(grade) - 10 <= i <= max(grade):print(f"学生{o}分数为{i},等级为A")o += 1

拓展作业

w01. 斐波那契数列

题目描述

斐波那契数列是一种特殊的数列,很多生活和企业场景中都能见到满足该数列的数据排列方式;现在要求你封装一个用于获取斐波那契数列数据的功能函数,用于底层数据支持;

输入描述

输入一个整数n

输出描述

输出位置为n的斐波那契数列对应的数据

示例

输入:1

输出:1


输入:3

输出:2


输入:8

输出:21

def fibonacci_iterative(n): # 初始化前两个斐波那契数 a, b = 0, 1

def fibonacci_iterative(n):# 初始化前两个斐波那契数a, b = 0, 1# 迭代n次,每次迭代计算下一个斐波那契数for _ in range(n):# 更新a和b的值,a变为下一个数,b变为当前数和下一个数的和a, b = b, a + b# 返回第n个斐波那契数return a
​
# 调用函数计算斐波那契数列的第5个数,并打印结果
print(fibonacci_iterative(5))

w02. 密码等级校验

题目描述

按照用户输入密码的字符,判断用户的密码强度,基本要求如下

  • 弱:都是数字,或者都是大写字母/小写字母组成的密码

  • 中等:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母] 或者 [大小写字母、数字]组成的密码

  • 强:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母]并结合特殊符号组成的密码

输入描述

用户输入一个字符串密码

输出描述

输出密码强度等级

示例

输入:abcdef

输出:弱密码


输入:abc123

输出:中等强度


输入:Abc123%

输出:强密码

def password_cent(n1):# 初始化标志变量,用于检查密码是否包含数字和字母has_digit = Falsehas_alpha = False
​# 遍历密码中的每个字符for i in n1:# 检查字符是否为数字(0-9)if 48 <= ord(i) <= 57:has_digit = True# 检查字符是否为字母(A-Z 或 a-z)if (65 <= ord(i) <= 90) or (97 <= ord(i) <= 122):has_alpha = True
​# 如果密码同时包含数字和字母,则返回True,否则返回Falsereturn has_digit and has_alpha
​
def password_max(n1):# 初始化标志变量,用于检查密码是否包含数字、大写字母、小写字母和特殊字符has_digit = Falsehas_upper = Falsehas_lower = Falsehas_special = False
​# 遍历密码中的每个字符for i in n1:# 检查字符是否为数字(0-9)if 48 <= ord(i) <= 57:has_digit = True# 检查字符是否为大写字母(A-Z)if 65 <= ord(i) <= 90:has_upper = True# 检查字符是否为小写字母(a-z)if 97 <= ord(i) <= 122:has_lower = True# 检查字符是否为特殊字符(包括空格和标点符号)if (32 <= ord(i) <= 47) or (58 <= ord(i) <= 64) or (91 <= ord(i) <= 96) or (123 <= ord(i) <= 126):has_special = True
​# 如果密码同时包含数字、大写字母、小写字母和特殊字符,则返回True,否则返回Falsereturn has_digit and has_upper and has_lower and has_special
​
# 测试密码列表
test_passwords = ["password", "Password1", "Password@1", "123456", "ABCDEF"]
results = []
​
# 遍历测试密码列表
for pwd in test_passwords:# 检查密码是否为高强度密码if password_max(pwd):results.append("这是高强度密码")# 如果不是高强度密码,检查是否为中等强度密码elif password_cent(pwd):results.append("这是中等强度密码")# 如果既不是高强度密码也不是中等强度密码,则认为是弱密码else:results.append("这是弱密码")
​
# 打印测试结果
print(results)
​

w03. 密码加密

题目描述

编写一个函数,实现密码的错位加密

编写一个函数,实现密码的错位解密

输入描述

输入一个字符串明文密码;

输入一个字符串密文数据;

输出描述

打印展示加密后的字符串密文

打印展示解密后的明文字符串

示例

输入:

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 += _acreturn ep
​
def decrypt(password, n=4):"""解密函数"""pwd = ""for i in str(password):ac = ord(i)ac -= n_ac = chr(ac)pwd += _acreturn pwd
​
pd = input("请输入明文数据:")
print("加密后的数据:", encrypt(pd, 5))
​
pd2 = input("请输入密文数据:")
print("解密后的数据:", decrypt(pd2, 5))


http://www.mrgr.cn/news/62604.html

相关文章:

  • Java 控制语句(3/30)
  • TIA 中用 GSD 方式组态 ET200SP 安全模块时如何用 S7-FCT 分配安全目标地址
  • [vulnhub] SecTalks:BNE0x00 - Minotaur
  • 深入探索:深度学习在时间序列预测中的强大应用与实现
  • Python 自动化运维:数据库操作
  • 爬虫设计思路
  • ARM base instruction -- adc
  • 2181、合并零之间的节点
  • YOLOv4和Darknet实现坑洼检测
  • 如何成为一名优秀的程序员,进来看看
  • 网络安全不知道怎么学,看完这篇,中学生都能学会
  • iOS 再谈KVC、 KVO
  • 阿里CDN框架
  • 前端实现echarts折线图堆叠(多条折线)
  • Jupyter notebook 添加目录插件
  • 一致校验矩阵计算
  • kdd比赛方案
  • 基于Python的PostgreSQL数据库操作示例(三)
  • 笔记本双系统win10+Ubuntu 20.04 无法调节亮度亲测解决
  • Istio_04_Istio可观测性
  • 一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统
  • vue3使用vite设置 @ 路径别名指向src 目录
  • mac-ubuntu虚拟机(扩容-共享-vmtools)
  • 如何预防Kubernetes安全漏洞
  • 如何创建一个网站?
  • 【hacker送书第14期】AI训练师算法与模型训练从入门到精通