Trains-04练习-函数

#基础练习

练习目标

01.计算车费

题目描述

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

输入描述

输入一个公里数

输出描述

输出应付车费

示例

输入:

5

输出:

12

#定义函数
def car_money(n):"""计算车费"""# 定义常量first_money = 8one_km_money = 2#类型转换first_money = float(first_money)one_km_money = float(one_km_money)# 计算车费all_money = first_money + one_km_money * nreturn all_money
#输入小红行驶的公里数
n = float(input("请输入行驶的公里数"))
#输出应付的车费
print("应付车费:",car_money(n))

02.整数叠加

题目描述

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

输入输出描述

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

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

提示

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

示例1

输入:

999

输出:

27

解释:

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

'''
#方法一:
#定义函数
def add_math(x):"""计算一个数各个位上之和"""x = int(x)if x == 1000:result = 1else:hundred = x // 100ten = x % 100 // 10one = x % 100 % 10result = hundred + ten + onereturn result
#输入要求和的数据
x = input ("请输入要求和的数:")
print("各个位上的数字之和为:",add_math(x))
'''
#方法二:
#定义函数
def add_math(date):"""计算一个整数各个位上之和"""#类型转换date = int(date)date_str = str(date)#定义要使用的参数add_date = 0#使用for in 循环 从 date_str(字符类型)中读取 每个位上的字符#再将这些字符数据 转化为 整数类型 进行求和处理for x in date_str:add_date +=int(x)#设置返回值return add_date
#输入要求的整数
date = input ("请输入要求和的数:")
#输出求得的整数之和
print("计算的各个位上的数字之和为:",add_math(date))

03.时间拆分

题目描述

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

输入描述

输入一个分钟数

输出描述

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

示例

输入:

1000000000

输出:

1902

214

#定义函数
def time(minute):#由题目知 是先全部转化成年数 再将未满一年的 转化为天数#定义常量year = 365day = 24hour = 60#进行转换yu_year = minute // hour //day //yearyu_day = minute // hour //day % year#换行输入print("转换年数为:",yu_year)print("转换天数为:",yu_day)return
#输入对应的参数
minute = int(input("请输入要转换的分钟数:"))
#输出函数结果
print(time(minute))

04.回文素数

题目描述

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

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

示例

2
3
5
7
11
101
131
151
181
191

 #定义筛选素数的函数(prime):
def is_prime(n):"""用来筛选素数"""#因为 小于2的都没有素数 而且可以防止负数数据的输入 减少了负数进入循环占用算术空间if n < 2:return False#想打False 要使用大写开头#进行遍历for i in range(2,int(n**0.5 ) + 1 ):if n % i == 0:return Falsereturn True   #对于返回值 要看后面是否需要其返回的数据 如果只是判断是否符合条件 判断真假即可
#在使用range进行遍历时  因为 range (x,y) 取的值是[x,y)
#所以在这里的遍历中 防止 i 本身为整数时 错过循环  在int(n**0.5 ) 的后面加了一个1
#在之前筛选素数时, 使用的 都是将 n之前的数全部提出来 全部逐个进行一次取余的运算
#这里 因为 一个数字 如果有因数的话 两个因数中 一定会有一个数字是小于原数的平方根的#palindrome 回文数
def is_palindrome(n):"""翻转数据"""#引用变量 定义一个空变量 方便后续的赋值 不然既不符合逻辑  同时也会报错s = ""y = ""for i in str(n):#在对字符 n 进行遍历时先会将组成 n 的字符 逐个遍历出来s = i + s#进行拼接 因为在没写数据类型转换代码的前提下 s 默认的是字符类型 而字符加 字符 就是拼接y = int(s)if y == n:return y#将值返回出来 返回的的数据和之前的数据进行判断比较 返回符合条件的数据
#定义最后的运行函数
#前面两个函数 一个筛选素数 另外一个翻转数据 这样我们可以将以原数据和翻转数据作为判断条件来验证是否是回文数
def is_prime_palindrome():m = 0num = 1#开始从一开始验证数据while m < 100:#这里循环设置这样的条件是因为 我们需要的是前100个数if is_prime(num) and is_palindrome(num):#判断同时满足回文数和素数的条件print(num, end='\t')#输出符合条件的值 同时 在数据的最后放一个\t 防止换行m += 1if m % 10 ==0:#因为要求的是 对于输出的100个数据要按照10个一行进行输出 所以在这里对于输出数据的个数进行取余处理# 当结果为0 时 说明 满足 10个一行的条件了 就需要换行 这里是用的if 判断 刚好需要一个判断的结果#print 的最后 会默认带上一个换行字符就达到换行的目的了print()num +=1
#注意缩进 在编写代码时 尽量将同一缩进的代码先编写出来#因为设置的函数无返回值 也没有 参数 所以直接运行函数就行了
is_prime_palindrome()

05.反素数

题目描述

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

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

#定义素数的函数
"""判断素数"""
def is_prime(n):if n < 2:return Falseelif n == 2:return Trueelif n > 2 :for i in range(2 , int( n**0.5)+1):if n % i ==0:return Falsereturn True
#print(is_prime(9))# #判断回文数
def is_palindrome(n):s = str(n)y = ""for m in  s:y =m+yif int(y) == n and is_prime(int(y)):return Truereturn False
#print(is_palindrome(151))#将上面两个函数结合 并输出正确数据
def is_prime_palindrome_palindrome_prime():#参数 的变化 和100个数据的设定m = 0num = 1while m <=100:if is_prime(num) and is_palindrome(num):#当使用 and 连接时 要俩个均为真 才对print(num, end='\t')m += 1if m % 10 ==0:print()num += 1is_prime_palindrome_palindrome_prime()

06.双素数

题目描述

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

输出显示小于1000的双素数

#双素数 在素数的基础上
#加上一个验证两个相邻素数 的差为2 的函数def is_prime(n):"""判断素数"""if n < 2:return Falseelif n == 2:return Trueelif n > 2 :for i in range(2 , int( n**0.5)+1):if n % i ==0:return Falsereturn True#先写出前1000的素数
def is_two():"""判断两个相邻素数 差值为2"""n = 1while n < 1000:if is_prime(n) and is_prime(n+2):print(n,n+2)n += 1is_two()

07.梅森素数

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

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

def is_prime(n):"""判断素数"""if n < 2:return Falseelif n == 2:return Trueelif n > 2 :for i in range(2 , int( n**0.5)+1):if n % i ==0:return Falsereturn True#写出梅林数 再在梅林数中筛选素数
p =1
while p <= 31:x = 2**p -1if is_prime(x):print(x)p += 1

08.堆叠相加

题目描述

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

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

输入输出描述

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

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

示例

输入:

3 4

输出:

3702

解释:

3 + 33 + 333 + 3333 = 3702

def add():x = input("请输入原数")y = int(input("请输入需要组数"))m = 1  # 计算组数的变量all = 0 #求和的数据j = xwhile m <= y:j = int(j)all = int(all)all += jj = str(j)j += str(x)m += 1return all# 先拼接需要的字符 并注意字符转换 在进行相加
print(add())

09.检测密码

题目描述

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

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

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

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

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

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

输入输出描述

输入一串密码

输出该密码是否符合规则

示例1

输入:

123456ab

输出:

No

示例2

输入:

123abcABC

输出:

Yes

def number_detections(n):if len(n) >= 8:#计算 字符数的内置函数len()return Truereturn Falsedef alphabet_math(n):#计数器# n = input("请输入要检测的密码")math = 0max_alphabet = 0min_alphabet = 0n = str(n)for i in n:#检查数字if  48 <= ord(i) <= 57:math +=1#检查大写字母elif  65 <= ord(i) <= 90:max_alphabet +=1#检查小写字母elif  97 <= ord(i) <= 122:min_alphabet +=1#判断是否符合条件if math > 0:return Trueif max_alphabet >= 2:return Trueif min_alphabet >= 2:return Trueelse:return Falsedef password_verification():m = input("请输入要检测的密码")if alphabet_math(m) and number_detections(m):print("YES")else:print("NO")
password_verification()

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

score = []
def score_all():member = int(input("请输入学生人数: "))for m in range(member):score.append(int(input("请输入成绩: ")))#获取最高分best = max(score)best = int(best)#开始赋等级for i in score:i = int(i)if i >= best - 10:print("等级为A")elif i >= best - 20:print("等级为B")elif i >= best - 30:print("等级为C")elif i >= best - 40:print("等级为D")else:print("等级为F")
score_all()

拓展作业

w01. 斐波那契数列

题目描述

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

输入描述

输入一个整数n

输出描述

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

示例

输入:1

输出:1


输入:3

输出:2


输入:8

输出:21

def sequence(n):n = int(n)m = 2   #设置一个计数器if n == 1: print("输出:",0)elif n == 2 :print("输出:",1)elif n < 1 :print("输入数据有误")#正式开启 斐波那契数列数列的算法elif n > 2 :#定义常量x = 0y = 1z = 0#以计数器来作为循环条件while m != n:
#观察斐波那契数列可知  在一个加法运算中
# 前一个加法的和作为加数 参与下一个数据加法的运算中z = x + yx = yy = zm += 1return z#输出结果
print(sequence(input("请输入要求数据的位置为:")))

w02. 密码等级校验

题目描述

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

  • 弱:都是数字,或者都是大写字母/小写字母组成的密码
  • 中等:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母] 或者 [大小写字母、数字]组成的密码
  • 强:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母]并结合特殊符号组成的密码

输入描述

用户输入一个字符串密码

输出描述

输出密码强度等级

示例

输入:abcdef

输出:弱密码


输入:abc123

输出:中等强度


输入:Abc123%

输出:强密码

#这里应该会使用ASCII码 的大小 来判断 大小写英文 和是否有英文
#在 Python 中,可以使用内置函数chr()将 ASCII 码值转换为对应的字符,
# 使用ord()函数将字符转换为对应的 ASCII 码值
#48-122 在数字和 字母在的范围  91-96 是大小写的界限 也是特殊字符#这里要设置一个类似于计数器 的东西  用来判断密码的强度
def password_verification(n):n = str(n)number = 0math = Falsecapital = Falselowercase = False#循环遍历 密码中的每个字符 通过ASCII 码 判断字符的种类for i in n:if 48 <= ord(i) <= 57:math = Trueelif 65 <= ord(i) <= 90:capital = Trueelif 97 <= ord(i) <= 122:lowercase = Trueelse:return Falseif math:number +=1if capital:number +=1if lowercase :number +=1else:number +=0if number == 1: return "弱密码"elif number == 2:return "中密码"elif number == 3:return "强密码"else : return "输入的密码有误"print(password_verification(input("请输入要检验的密码:")))

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

修改后:


def encrypt(passwords,n=4):""""加密函数"""#定义一个空变量 方便后续的使用ep = ""#将形参转化成字符后进行遍历for i in str(passwords):#将遍历出来的字符转换成ASCII码 赋值给acac = ord(i)#设置加密的进制ac +=n#设置ASCII 的范围if ac > 127:  # 限制在 ASCII 码的有效范围内ac = 32 + (ac - 127)elif ac < 32:  # 限制在 ASCII 码的有效范围内ac = 127 - (32 - ac)#将加密后的数据通过转化成 字符 赋值给新的参数_ac_ac = chr(ac)#因为每个字符被转化回来的话 也是字符的形式 所以可以直接才用加法进行拼接ep += _acreturn ep
#print(encrypt(input("请输入需要加密的密码:"),int(input("输入加密进制"))))
pd = input("请输入明文数据:")
print("加密后的数据:", encrypt(pd, 5))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3-小兔鲜项目出现问题及其解决方法(未写完)

基础操作 &#xff08;1&#xff09;使用create-vue搭建Vue3项目 要保证node -v 版本在16以上 &#xff08;2&#xff09;添加pinia到vue项目 npm init vuelatest npm i pinia //导入creatPiniaimport {createPinia} from pinia//执行方法得到实例const pinia createPinia()…

【Vue】 npm install amap-js-api-loader指南

前言 项目中的地图模块突然打不开了 正文 版本太低了&#xff0c;而且Vue项目就应该正经走项目流程啊喂&#xff01; npm i amap/amap-jsapi-loader --save 官方说这样执行完&#xff0c;就这结束啦&#xff01;它结束了&#xff0c;我还没有&#xff0c;不然不可能记录这篇文…

C#桌面应用制作计算器进阶版01

基于C#桌面应用制作计算器做出了少量改动&#xff0c;其主要改动为新增加了一个label控件&#xff0c;使其每一步运算结果由label2展示出来&#xff0c;而当点击“”时&#xff0c;最终运算结果将由label1展示出来&#xff0c;此时label清空。 修改后运行效果 修改后全篇代码 …

Linux下Intel编译器oneAPI安装和链接MKL库编译

参考: https://blog.csdn.net/qq_44263574/article/details/123582481 官网下载: https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html?packagesoneapi-toolkit&oneapi-toolkit-oslinux&oneapi-linoffline 填写邮件和国家,…

文件管理 IV(文件系统)

一、文件系统结构 文件系统&#xff08;File system&#xff09;提供高效和便捷的磁盘访问&#xff0c;以便允许存储、定位、提取数据。文件系统有两个不同的设计问题&#xff1a;第一个问题是&#xff0c;定义文件系统的用户接口&#xff0c;它涉及定义文件及其属性、所允许的…

基于ToLua的C#和Lua内存共享方案保姆级教程

C#和Lua内存共享方案保姆级教程 前言 在介绍C#和Lua内存共享方案之前,先介绍下面两个点来支撑这个方案的必要性 跨语言交互很费 Lua和C#交互最早是基于反射的方式实现的,后来为了提升性能发展成Luajit+C#静态方法导出注入到lua虚拟机的方式至此Lua+Unity的性能才达到了实…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…

SpringBoot学习记录(六)配置文件参数化

SpringBoot学习记录&#xff08;六&#xff09;配置文件参数化 一、参数提取到配置文件中二、yml配置文件三、ConfigurationProperties注解实现批量属性注入 一、参数提取到配置文件中 定义在代码中的参数的值分散在各个不同的文件中&#xff0c;不便于后期维护管理&#xff0…

# ubuntu 安装的pycharm不能输入中文的解决方法

ubuntu 安装的pycharm不能输入中文的解决方法 一、问题描述&#xff1a; 当在 ubuntu 系统中&#xff0c;安装了 pycharm&#xff08;如&#xff1a;pycharm2016, 或 pycharm2018&#xff09;,打开 pycharm 输入代码时&#xff0c;发现不能正常输入中文&#xff0c;安装的搜狗…

NLP论文速读(CVPR 2024)|使用DPO进行diffusion模型对齐

论文速读|Diffusion Model Alignment Using Direct Preference Optimization 论文信息&#xff1a; 简介&#xff1a; 本文探讨的背景是大型语言模型&#xff08;LLMs&#xff09;通过人类比较数据和从人类反馈中学习&#xff08;RLHF&#xff09;的方法进行微调&#xff0c;以…

<OS 有关> ubuntu 24 不同版本介绍 安装 Vmware tools

原因 想用 apt-get download 存到本地 / NAS上&#xff0c;减少网络流浪。 看到 VMware 上的确实有 ubuntu&#xff0c;只是版本是16。 ubuntu 版本比较&#xff1a;LTS vs RR LTS: Long-Term Support 长周期支持&#xff0c; 一般每 2 年更新&#xff0c;会更可靠与更稳定…

泛微E9与金蝶云星空的集成方案:实现审批流程与财务管理的无缝对接

泛微E9与金蝶云星空的集成方案&#xff1a;实现审批流程与财务管理的无缝对接 背景介绍&#xff1a; 在企业日常运营中&#xff0c;泛微OA-E9和金蝶云星空是两个关键的系统。泛微OA-E9是一款广受企业青睐的办公自动化软件&#xff0c;它通过流程管理、文档管理、协同办公等模…

Redis最终篇分布式锁以及数据一致性

在前三篇我们几乎说完了Redis的所有的基础知识以及Redis怎么实现高可用性,那么在这一篇文章中的话我们主要就是说明如果我们使用Redis出现什么问题以及解决方案是什么,这个如果在未来的工作中也有可能会遇到,希望对看这篇博客的人有帮助,话不多说直接开干 一.Hotkey以及BigKey…

GPT中转站技术架构

本文介绍阿波罗AI中转站&#xff08;https://api.ablai.top/&#xff09;的技术架构&#xff0c;该中转API的技术架构采用了分布式架构、智能调度和API中转等技术&#xff0c;确保了全球范围内的高效访问和稳定运行。以下是对该技术架构的详细分析&#xff1a; 分布式架构 分…

【强化学习的数学原理】第02课-贝尔曼公式-笔记

学习资料&#xff1a;bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接&#xff1a;强化学习的数学原理 西湖大学 赵世钰 文章目录 一、为什么return重要&#xff1f;如何计算return&#xff1f;二、state value的定义三、Bellman公式的详细推导四、公式向量形式…

[less] Operation on an invalid type

我这个是升级项目的时候遇到的&#xff0c;要从 scss 升级到 less&#xff0c;然后代码中就报了这个错误 我说一下代码的错误过程&#xff0c;但是这里没有复现&#xff0c;因为我原本报错的代码要复杂很多&#xff0c;而且是公司代码&#xff0c;不方便透露&#xff0c;这是我…

ssm面向品牌会员的在线商城小程序

摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff0c;网络化和电子化。它将是直接管理面向品牌会员的在线商城小程序的最新形式。本小程序是以面向品牌会员的在线商城管理为目标&#xff0c;使用 java技术制…

国土变更调查拓扑错误自动化修复工具的研究

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、拓扑错误的形成原因 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭长 5.细小碎面 6.更新层相互重叠 二、修复成果展示 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭…

WPS 加载项开发说明wpsjs

wpsjs几个常用的CMD命令&#xff1a; 1.打开cmd输入命令测试版本号 npm -v 2.首次安装nodejs&#xff0c;npm默认国外镜像&#xff0c;包下载较慢时&#xff0c;可切换到国内镜像 //下载速度较慢时可切换国内镜像 npm config set registry https://registry.npmmirror.com …

Javaweb梳理18——JavaScript

今日目标 掌握 JavaScript 的基础语法掌握 JavaScript 的常用对象&#xff08;Array、String&#xff09;能根据需求灵活运用定时器及通过 js 代码进行页面跳转能通过DOM 对象对标签进行常规操作掌握常用的事件能独立完成表单校验案例 18.1 JavaScript简介 JavaScript 是一门跨…