Python语言程序设计(笔记)
1、平方根的格式化
知识点:平方根计算
- pow(a,0.5)[可以计算负数,结果为复数]
- a**b
例题:
获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。
输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。
如果结果超过30个字符,则以结果宽度为准。
我的答案:
a=eval(input())
print("{0:+>30.3f}".format(pow(a,0.5)))
运行结果:
1、10
+++++++++++++++++++++++++3.162
2、-10
++++++++++++++++++0.000+3.162j
点评分析:
这是一个简单题,重点在于理解格式化输出的方法。
注意:如果平凡根后产生一个复数,由于复数的实部和虚部都是浮点数,.3f可以将实部和虚部分别取三位小数。
1.1、凯撒密码( 栅栏密码 )
plaincode=input("请输入明文:")
for p in plaincode:
if ord("a")<=ord(p)<=ord("z"):
print(chr(ord('a')+(ord(p)-ord('a')+3)%26),end="")
#end="",是不想让【循环】输出换行。因为print自带换行。
else:
# %26,mod26是因为+3后可能超出范围,通过这个操作限定范围
print(p,end="")
1.2、随机密码生成
描述
补充编程模板中代码,完成如下功能:
以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用random.randint()函数。
建议答案:
import random
def mima(length):
a=10**(length-1)
b=10**length - 1
return "{}".format(random.randint(a,b)) #居然可以return这个东西
length=eval(input())
random.seed(17)
for i in range(3):
print(mima(length))
2、字符串分段组合
知识点:str.split("xxxxx"),返回一个 列表 ,由str中被 xxxxx 分隔的部分组成
例题:
获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。
我的答案:
s=input()
for i in range(0,99991):
if(s[i]=="-"):
a=s[0:i]
break
for j in range(1,99999):
if(s[-j]=="-"):
b=s[(-j)+1:-1]
break
print("{}+{}{}".format(a,b,s[-1]))
运行结果:
1-2-3-4
1+4
建议答案:
s=input()
ls=s.split("-")
print("{}+{}".format(ls[0],ls[-1]))
运行结果:
1-2-3-4
1+4
3、四位玫瑰数
描述:
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
我的答案:
for i in range(1000,10000):
a=i//1000
b=(i%1000)//100
c=((i%1000)%100)//10
d=((i%1000)%100)%10
if(a**4+b**4+c**4+d**4==i):
print("{}\n".format(i))
建议答案:
s = ""
for i in range(1000, 10000):
t = str(i)
if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :
print(i)
分析解释
1、print()本身就带有换行了
2、eval()评估函数,居然可以把数当作字符串处理,及其简单的得到这个数的个位、十位、百位、等等
4、100以内素数之和
描述
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
我的答案:
在cpp里,是两个for循环,然后判断(2,n)之后,n是否还等于i
建议答案:
#Prime
def is_prime(n):
for i in range(2,n):
if n%i == 0:
return False
return True
sum = 0
for i in range(2,100):
if is_prime(i):
sum += i
print(sum)
5、连续素数(质数)计算
- str字符串不能单独赋值,和cpp不一样,所以直接输出
- python在使用变量前不需要定义,用的时候,进行什么样的操作,就可以看出是什么变量类型
- 与cpp不同的是:python中 for一般是遍历,while一般限定循环次数。
描述
补充编程模板中代码,完成如下功能:
获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。
我的答案:
建议答案:
def sushu(m): #判断素数的函数
for i in range(2,m):
if m%i == 0:
return False
return True #注意缩进,是for循环完了还不满足,才return True
n=eval(input())
n_=int(n)+1 #把浮点数换成整数
count=5 #限定输出个数
while count>0: # count =5,4,3,2,1都可以循环,不就是循环5次嘛
if sushu(n_):
if count>1: #这个东西是为了前4次输出有结尾的逗号,
print(n_,end=",")
else:
print(n_,end="")
count-=1 #注意缩进,不管啥,只要 if sushu()成立[是素数],都要把计数器减1
n_+=1 #注意缩进,不管啥,每次搞完都要把 n_加1,方能遍历 【遍历】
6、七段数码管turtle绘制
知识点:
- 函数定义与编写
- return
- 局部变量和全局变量
- 参数传递问题
建议答案:
import turtle
def drawgap(): #画空白函数
turtle.penup()
turtle.fd(5)
def drawline(line): #画线条函数
drawgap()
turtle.pendown() if line else turtle.penup
turtle.fd(20)
drawgap()
turtle.right(90)
def drawdigit(digit): #画一个数码函数
drawline(1) if digit in [2,3,4,5,6,8,9] else drawline(0)
drawline(1) if digit in [0,1,3,4,5,6,7,8,9] else drawline(0)
drawline(1) if digit in [0,2,3,5,6,8,9] else drawline(0)
drawline(1) if digit in [0,2,6,8] else drawline(0)
turtle.left(90)
drawline(1) if digit in [0,4,5,6,8,9] else drawline(0)
drawline(1) if digit in [0,2,3,5,6,7,8,9] else drawline(0)
drawline(1) if digit in [0,1,2,3,4,7,8,9] else drawline(0)
turtle.right(180)
turtle.fd(10)
def drawdate(date): #需要的日期函数
for p in date:
drawdigit(eval(p))
def main(): #主函数
turtle.setup(800,250,200,300)
turtle.pensize(5)
turtle.penup()
turtle.fd(-150)
drawdate("20200117")
turtle.hideturtle()
turtle.done()
main()
7、汉诺塔问题
知识点:函数递归调用
三个部分
- 函数+分支(if ->3 else ->2)
- 链条
- 基例
建议答案
count=0
def han(n,A,C,B): #四个参数采用位置传递,代表的含义分别为:搬运圆盘编号,圆盘起始位置,圆盘目标位置,过渡位置
global count
if n==1:
print("{}:{}->{}".format(1,A,C))
count+=1
else: #递归链条表示:先把上面n-1个搬到过渡位置,剩的那个最大的放到目标位置,再把那n-1个放到目标位置
han(n-1,A,B,C)
print("{}:{}->{}".format(n,A,C))
count+=1
han(n-1,B,C,A)
print(han(3,"A","C","B")) #以三个圆盘为例
print(count)
输出结果:
1:A->C
2:A->B
1:C->B
3:A->C
1:B->A
2:B->C
1:A->C
7
8、基本统计值计算
总和、平均数、中位数、方差
def getnum():
ls=[]
nums=input("请输入数字:")
while nums !='':
ls.append(eval(nums))
nums=input("请输入数字:")
return ls
def pingjun(ls):
sum=0.0
for p in ls:
sum+=p
return sum/len(ls)
def fangcha(ls,ave):
sum=0.0
for p in ls:
sum+=(p-ave)**2
return sum
def mid(ls):
sorted(ls)
size=len(ls)
if size%2==0:
med=(ls[size//2-1]+ls[size//2])/2
else:
med=ls[size//2]
return med
n=getnum()
print("平均数:{}\n方差{}\n中位数{}\n".format(pingjun(n),fangcha(n,pingjun(n)),mid(n)))
Python语言程序设计(笔记)的更多相关文章
- 【任务】Python语言程序设计.MOOC学习
[博客导航] [Python导航] 任务 18年11月29日开始,通过9周时间跨度,投入约50小时时间,在19年1月25日之前,完成中国大学MOOC平台上的<Python语言程序设计>课程 ...
- Python语言程序设计之二--用turtle库画围棋棋盘和正、余弦函数图形
这篇笔记依然是在做<Python语言程序设计>第5章循环的习题.其中有两类问题需要记录下来. 第一是如何画围棋棋盘.围棋棋盘共有19纵19横.其中,位于(0,0)的星位叫天元,其余8个星位 ...
- 全国计算机等级考试二级Python语言程序设计考试大纲
全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...
- Python语言程序设计之一--for循环中累加变量是否要清零
最近学到了Pyhton中循环这一章.之前也断断续续学过,但都只是到了函数这一章就停下来了,写过的代码虽然保存了下来,但是当时的思路和总结都没有记录下来,很可惜.这次我开通了博客,就是要把这些珍贵的学习 ...
- Python语言程序设计之三--列表List常见操作和错误总结
最近在学习列表,在这里卡住了很久,主要是课后习题太多,而且难度也不小.像我看的这本<Python语言程序设计>--梁勇著,列表和多维列表两章课后习题就有93道之多.我的天!但是题目出的非常 ...
- Python语言程序设计(1)--实例1和基本知识点
记录慕课大学课程<Python语言程序设计>的学习历程. 实例1:温度转换 #温度转换TempStr = input("请输入带有符号的温度值:") #TempStr是 ...
- 【学习笔记】PYTHON语言程序设计(北理工 嵩天)
1 Python基本语法元素 1.1 程序设计基本方法 计算机发展历史上最重要的预测法则 摩尔定律:单位面积集成电路上可容纳晶体管数量约2年翻倍 cpu/gpu.内存.硬盘.电子产品价格等都遵 ...
- Python语言程序设计学习 之 了解Python
Python简介 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件,源代 ...
- Python语言程序设计(3)--实例2-python蟒蛇绘制-turtle库
1. 2. 3.了解turtle库 Turtle,也叫海龟渲染器,使用Turtle库画图也叫海龟作图.Turtle库是Python语言中一个很流行的绘制图像的函数库.海龟渲染器,和各种三维软件都有着良 ...
随机推荐
- python进阶(12)闭包
闭包 首先了解一下:如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数. 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用 ...
- 剑指 Offer 31. 栈的压入、弹出序列 + 入栈顺序和出栈顺序的匹配问题
剑指 Offer 31. 栈的压入.弹出序列 Offer_31 题目详情: 解析: 这里需要使用一个栈来模仿入栈操作. package com.walegarrett.offer; /** * @Au ...
- PAT-1151(LCA in a Binary Tree)+最近公共祖先+二叉树的中序遍历和前序遍历
LCA in a Binary Tree PAT-1151 本题的困难在于如何在中序遍历和前序遍历已知的情况下找出两个结点的最近公共祖先. 可以利用据中序遍历和前序遍历构建树的思路,判断两个结点在根节 ...
- CodeBlocks的安装配置以及使用教程
CodeBlocks的安装配置以及使用教程 教程写的很啰嗦,本来几句话就能搞定的,但为了照顾到那部分真正的小白还请大家见谅! 一.下载 前往CodeBlocks官网下载带编译器的版本,目前的最新版本为 ...
- calcite 概念和架构
1. 前言 Flink使用Calcite构造SQL引擎,那么他们 是怎么合作的? drill, hive,storm 和其他的一干apache 大数据引擎也用calcite , 那么对于同一个sql ...
- Linux速通08 网络原理及基础设置、软件包管理
使用 ifconfig命令来维护网络 # ifconfig 命令:显示所有正在启动的网卡的详细信息或设定系统中网卡的 IP地址 # 应用 ifconfig命令设定网卡的 IP地址: * 例:修改 et ...
- 优化自动化测试流程,使用 flask 开发一个 toy jenkins工具
1.自动化 某一天你入职了一家高大上的科技公司,开心的做着软件测试的工作,每天点点点,下班就走,晚上陪女朋友玩王者,生活很惬意. 但是美好时光一般不长,这种生活很快被女主管打破.为了提升公司测试效率, ...
- 电影AI修复,让重温经典有了新的可能
摘要:有没有一种呈现,不以追求商业为第一目的,不用花大价钱,不用翻拍,没有画蛇添足,低成本的可共赏的让经典更清晰? 本文分享自华为云社区<除了重映和翻拍,重温经典的第三种可能>,原文作者: ...
- windbg安装pykd记录
https://githomelab.ru/pykd/pykd 1.安装python (坑,分x86和x64,对应windbg版本) 2.安装pykd:'pip install pykd' 3.安 ...
- Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.
修改项目下build.gradle文件 在jcenter()前添加mavenCentral() 1 // Top-level build file where you can add configur ...