1.在程序中表示数据
书名是文字,也就是编程语言中常说的字符串
,在Python代码中表示字符串,需要在内容两边加上引号,双引号或是单引号均可,但必须是英文的引号(不能是中文符号),像下面这样
book_name = "深入理解计算机系统" print(book_name)
打印格式,可以抽象为一个模板,有一些文字是固定的,剩下的一些是变量中的值,这个模板如下
template = "书名: {},价格: {},出版年份: {}" print(template.format(book_name, book_price, publish_year))
2.运算符训练
先做个存款计算器熟悉一下运算符,现金12300元,存银行定期年利率为2.75%,算一下存3年,本息合计是多少?(不考虑复利),先将相关数据,存到变量中,然后用算术运算符把利息计算出来,最后计算本息合计
init_amount = 12300 # 初始金额 saving_rate = 0.0275 # 存款利率 saving_term = 3 # 存期 # 计算利息 interest = init_amount * saving_rate * saving_term # 本息合并 result = init_amount + interest print("本金{} 年利率{} 存期{}年\n本息合计为{}".format( init_amount, saving_rate, saving_term, result))
程序给出的结果是:本金12300 年利率0.0275 存期3年 本息合计为13314.75
除了常规的+ - * /
,Python还支持整除运算,使用两个斜线 //
,整除运算只返回商的整数部份。
例如 7 // 3
结果是2
计算7300秒,是多少小时多少分钟多少秒?
# 计算7300秒,是多少小时多少分钟多少秒 # 总时长(秒) total = 7300 # 先计算包含多少小时,使用整除 hour = total // 3600 # 将余数部份,放在一个变量中 residue = total % 3600 # 使用余数,计算包含多少分钟 minute = residue // 60 # 最后剩下的就是秒了 second = residue % 60 print("{}秒 ======= {}时{}分{}秒".format(total, hour, minute, second))
输出:2时1分40秒
3.分支流程控制训练
分支流程控制,顾名思义,给出条件,满足为1,不满足为0。或者可以是不同的情况下执行不同的命令。
即:if满足,则我们执行---;else if满足,我们执行---;else,我们执行---。
if h < 12 : print("上午好") else: print("下午好")
4.循环
for循环:变量i在语句里面,然后依次读取in后面的元素并执行for循环里面的命令
x = "我爱我的祖国" for i in x: print (i) 我 爱 我 的 祖 国
for i in range(10): print("我来刷屏了,哈哈哈") 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈
同样的功能,也可以使用while循环来完成
i = 0 while i < 10: print("我来刷屏了,哈哈哈") i += 1 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈 我来刷屏了,哈哈哈
在while 循环中,变量i
的值需要我们自己控制,在每次循环过程中,将其值增加1,当i
的值增加到10的时候,条件不成立,循环也就结束了
为了简化逻辑,我们使用纯数字密码,先声明一个变量,来存放密码,然后循环从0开始,尝试破解,代码如下
password = 391 # 先设置一个密码,存放在这个变量中 for i in range(9999): # 最大尝试次数 9999 if i == password: print("破解成功,密码是{}".format(i)) break # 已破解成功,跳出循环 else: print("正在尝试破解{}".format(i))
import random可以实现随机生成一个整数,实际操作为:
import random num = random.randint(10, 99) # 生成一个 10到99之间的随机数,存放到变量 num 中
使用input可以读取到键盘上出入的数字,收集整数需要使用到int
实际操作为:int(input())
结合上面的知识实现一个猜数字游戏的程序
import random num = random.randint(10,99) #随机生成一个10-99的整数 while True: #循环执行下面的程序 print("请输入你猜的数字:", end="") guess = int(input()) if guess = int(input()) print("猜对了,正确答案是:{}".format(num)) break #跳出循环 else: if guess > num: print("你猜大了") else: print("你猜小了")
我做的:
import random num = random.randint(10,99) for value in range(100): print("请输入一个整数,然后回车:", end="") value = int(input()) print("你输入的内容是:{}".format(value)) if value == num: print("你猜对了,答案是:{}"format(num)) break elif value > num: print("猜错了,你的答案有点大") else: print("猜错了,你的答案有点小")
5.函数
函数用def定义,def+函数名(),然后编辑命令代码,就像快捷方式,需要使用的时候,点击快捷方式,就能立即执行对应的指令,但是该指令就像在一个小箱子里的东西一样,外结不能直接读取。
def signature(): print("邮件标题: 学习Python中的函数") print("邮件正文: 我学会了自己封装函数") signature()
定义函数,使用def
关键字,函数名后面写圆括号,如果需要有参数,参数名字写在圆括号中
def hello(name): print("大家好,我是{}".format(name)) hello("kk") hello("qq") 大家好,我是kk 大家好,我是qq
6.内置函数
Python提供了很多内置函数
-
abs() 决对值
-
max() 最大值
-
min() 最小值
-
round() 四舍五入到小数点后指定位数
-
.......
n = min(1,3,5,7,9,11,0.7) print(n) 0.7
round是将传入的小数,四舍五入到指定的位数
pi = 3.1415926 print(round(pi, 2)) # 保留2位小数 print(round(pi, 3)) # 保留3位小数 3.14 3.142
7.创建带返回值的函数
函数中的return 关键字,就是返回指定的数据
实现一个函数,函数名为 add,接收2个参数,功能是做加法运算,返回计算的结果
def add(a, b): c = a + b return c num = add(1,7) print(num) 8
8.列表
列表用来在程序中方便的存储一组相关的数据,使用[]就可以存放数据,两个元素之间要用逗号隔开。例如:scores = [98, 95, 100]
如果只需要输出其中一个数据,就要用到索引
了,也叫下标
,注意,索引是从0
开始的
print(scores[0]) # 第一位同学的成绩 print(scores[1]) # 第二位同学的成绩 print(scores[2]) # 第三位同学的成绩
Python还提供了len()
函数,用于返回指定列表的长度,列表中有多少个数据,就输出多少。
例如:
scores = [98, 95, 100] print(len(scores)) 3
Python提供的列表支持动态扩容
del 列表名 [元素位置] 可以实现删除一个元素
scores = [98, 95, 100] scores.append(88) # 第四个同学的成绩 print(scores)
Python内置函数 max() min() sum() 可以直接传入列表,进行相应的计算并返回结果
总结以上的知识实现:
程序名称:比赛打分
需求描述
-
程序运行后,输出欢迎信息
-
循环提示用户从键盘录入成绩(整数)
-
如果录入 -1 表示结束录入
-
去掉一个最高分,去掉一个最低分
-
计算最后得分
print("=====================") print("=欢迎进入比赛打分系统=") print("=====================") score = [] def ave(score): mi = min(score) mx = max(score) total = sum(score) total1 = total - mi - mx avg = total1 / (len(score)-2) print("去掉一个最高分{},去掉一个最低分{},最后得分{}".format(mx,mi,round(avg,1))) i = 0 while True: i += 1 print("请输入第{}位的成绩:".format(i), end="") mark = int(input()) if mark == -1: break else: score.append(mark) ave(score) ===================== =欢迎进入比赛打分系统= ===================== 请输入第1位的成绩:1 请输入第2位的成绩:75 请输入第3位的成绩:95 请输入第4位的成绩:55 请输入第5位的成绩:74 请输入第6位的成绩:95 请输入第7位的成绩:100 请输入第8位的成绩:54 请输入第9位的成绩:-1 去掉一个最高分100,去掉一个最低分1,最后得分82.3
print("================") print("欢迎进入比赛打分系统") print("================") scores = [] # 声明一个空的列表,用来存放分值 while True: num = len(scores) # 当前有已录入了几个成绩 print("请输入第{}位的成绩:".format(num + 1), end="") val = int(input()) if val == -1: break # 当输入的值是 -1 时,跳出 while 循环 else: scores.append(val) # 否则把输入的值存放到 scores 列表中 height = max(scores) # 获取最高得分 low = min(scores) # 最低得分 total = sum(scores) # 总分 num = len(scores) - 2 # 有效分值数量 avg = (total - height - low) / num # 去掉最高分和最低分,计算平均分 avg = round(avg, 1) # 保留1位小数 print("去掉一个最高分{},去掉一个最低分{},最后得分{}".format( height, low, avg))
9.基础强化
#循环输出0~10区间(包括0不包括10)的所有偶数 for i in range(10): if i%2 == 0: print(i)
#循环输出100以内能同时被3和5整除的正整数 for i in range(100): if i%15 == 0: print(i)
#用循环统计出给定数据中,有多少个2 #[3, 5, 2, 7, 2, 6, 4, 4, 2, 6, 7, 9, 2] nums = [3, 5, 2, 7, 2, 6, 4, 4, 2, 6, 7, 9, 2] j = 0 for i in nums: if i == 2: j += 1 print(j)
#输出100以内,包含7的数字,以及7的倍数,例如7、14、17、... for i in range(100): if i%7 == 0 and i>=7: print(i) elif i%10 == 7: print(i)
#将成绩转为等级,小于60分为E、60-70(不含)为D,70-80(不含)为C,80-90(不含)为B,90以上为A print("请输入成绩:", end="") num = int(input()) if num < 60: print("您的成绩为E") elif num >= 60 and num < 70: print("您的成绩为D") elif num >= 70 and num < 80: print("您的成绩为C") elif num >= 80 and num < 90: print("您的成绩为B") elif num >= 90 and num <= 100: print("您的成绩为A")
#使用循环计算出平均值、最大值、最小值 [66, 80, 93, 88, 95, 75, 70] nums = [66, 80, 93, 88, 95, 75, 70] mi = 10000 mx = 0 total = 0 j = 0 for i in nums: j += 1 if mi < i: mi = mi else: mi = i if mx > i: mx = mx else: mx = i total = total + i avg = total/j print("平均值为{},最大值为{},最小值为{}".format(avg,mx,mi)) 平均值为81.0,最大值为95,最小值为66
#写一个函数,接收一个num参数,把传入的数字,转为中文星期的几,0为周日,1为周一,.. def num(wek): if wek == 1: print("周一") elif wek == 2: print("周二") elif wek == 3: print("周三") elif wek == 4: print("周四") elif wek == 5: print("周五") elif wek == 6: print("周六") elif wek == 0: print("周日") else: print("请输入正确的数") print("请输入一个0-6的整数,然后回车:", end="") num(int(input()))
#在同一行,输出指定数量的*号,列如num=5,则输出5个*号。提示print("*", end="")这样输出后不会自动换行 print("请输入数字:", end="") num = int(input()) for i in range(num): print("*", end="") print("")
#用*号打印指定行和列的矩形,变量row表示行数,变量col表示列数,例如row=3; col=5;时,打印出如下效果: ***** ***** ***** print("请输入列数:", end="") col = int(input()) print("列数为:{}". format(col)) print("请输入行数:", end="") row = int(input()) print("行数为:{}". format(row)) for j in range(row): for i in range(col): print("*", end="") print("")
#根据row变量的值,打印出对应行数的三角形,如果row为5,则打印一个5行的三角形,如下所示 * ** *** **** ***** print("请输入整数:", end="") row = int(input()) print("输入的数为:{}". format(row)) for j in range(row): for i in range(j+1): print("*", end="") print("")
#写一个函数,根据传入的年份,判断是否闰年,是闰年返回true,不是则返回false。符合下面条件之一的,均为闰年: #能被4整除,但不能被100整除 #能被4整除,又能被400整除 def leap(year): if year%4 == 0: if year%100 != 0 or year%400 == 0: return True else: return False else: return False print("请输入整数:", end="") year = int(input()) print("输入的数为:{}". format(year)) print(leap(year))
#用循环统计出给定数据中,每种数字,分别出现了多少次 #[3, 5, 2, 7, 2, 6, 4, 4, 2, 6, 7, 9, 2] nums = [3, 5, 2, 7, 2, 6, 4, 4, 2, 6, 7, 9, 2] A = [] B = [] y = 0 for i in nums: for j in A: if j == i: A.remove(i) B.append(0) A.append(i) B.append(0) #列表A罗列出所有元素种类,表列B罗列出种类数个的0 for a in A: y += 1 #计算出列表A的数量 for z in range(y): #循环y次 for x in nums: if x == A[z]: B[z] += 1 for g in range(y): print("数字{}出现了{}次". format(A[g],B[g]))
10.图书管理v1.0
print("=====================\n欢迎使用图书管理系统\n=====================") book_ISBN = [9787111544937,9787111128069] book_name = ["深入理解计算机系统","C程序设计语言"] book_home = ["机械工业出版社","机械工业出版社"] book_time = [2016,2014] while True: print("\n1. 查询图书 2.新增图书 3.删除图书 4.退出") print("请选择:", end="") sn = int(input()) if sn == 1: print(" ISBN | 书名 | 出版社 | 出版年份") j = 0 for i in book_ISBN: print("{} {} {} {}". format(book_ISBN[j],book_name[j],book_home[j],book_time[j])) j += 1 if sn == 2: print("请输入ISBN(13位数字):", end="") ISBN = int(input()) book_ISBN.append(ISBN) print("请输入书名:", end="") name = input() book_name.append(name) print("请输入出版社:", end="") home = input() book_home.append(home) print("请输入年份:", end="") time = int(input()) book_time.append(time) print("\n保存成功") if sn == 3: print(" ISBN | 书名 | 出版社 | 出版年份") j = 0 for i in book_ISBN: print("{} {} {} {}". format(book_ISBN[j],book_name[j],book_home[j],book_time[j])) j += 1 print("请输入要删除的ISBN:", end="") ISBNdef = int(input()) bookdef = 0 for d in book_ISBN: if d == ISBNdef: del book_ISBN[bookdef] del book_name[bookdef] del book_home[bookdef] del book_time[bookdef] break bookdef += 1 print("删除成功") if sn == 4: print("") ================ 欢迎使用图书管理系统 ================ 1. 查询图书 2.新增图书 3.删除图书 4.退出 请选择:1 ISBN 书名 出版社 出版年份 9787111544937 深入理解计算机系统 机械工业出版社 2016 9787111128069 C程序设计语言 机械工业出版社 2014 1. 查询图书 2.新增图书 3.删除图书 4.退出 请选择: 2 请输入ISBN: 请输入书名: 请输出版社: 请输入年份: 保存成功 1. 查询图书 2.新增图书 3.删除图书 4.退出 请选择: 3 请输入要删除的ISBN: 删除成功 1. 查询图书 2.新增图书 3.删除图书 4.退出 请选择:
11.饭卡充值系统v1.0
print("=======================\n欢迎使用饭卡充值管理系统\n=======================") crad_id = [1001,1002,1003,1004,1005,1006,1007,1008] crad_rmb = [0.00,0.00,0.00,0.00,0.00,100,200.00,2102545.15] while True: print("请选择[1.查询 2.充值 3.退出]:", end="") number = int(input()) if number == 1: print("请输入卡号:", end="") ider = int(input()) num = 0 num1 = 0 for i in crad_id: if i == ider: print("【查询结果】\n卡号:{}\n余额:{}". format(i,crad_rmb[num])) break num += 1 for j in crad_id: num1 += 1 if num1 == num: print("查无此卡") if number == 2: print("请输入卡号:", end="") ider = int(input()) num0 = 0 num2 = 0 for i in crad_id: if i == ider: break num0 += 1 for j in crad_id: num2 += 1 if num2 == num0: print("查无此卡") else: print("充值金额:", end="") money = int(input()) crad_rmb[num0] += money print("充值成功,卡号{}余额{}元". format(ider,crad_rmb[num0])) if number == 3: break
12.银行ATM转账流程
import time now = time.localtime() print("====================================\n 欢迎使用ATM系统\n 当前时间:{}年{}月{}日\n====================================". format(time.strftime("%Y", now),time.strftime("%m", now),time.strftime("%d", now))) crad_id =[1001,1002,1003] crad_password = [123456,654321,888888] crad_money = [100,200,300] while True: print("请登录\n卡号:", end="") ider = int(input()) print("密码:", end="") password = int(input()) num0 = 0 num = 0 for i in crad_id: if ider == i: break else: num0 += 1 for j in crad_id: num += 1 if num0 == num: print("【密码错误】") else: if password == crad_password[num0]: print("【登录成功】") while True: print("请选择【1.查询余额 2.转帐 3.退出】:", end="") x = int(input()) if x == 1: print("卡号:{} 余额:{}". format(crad_id[num0],crad_money[num0])) elif x == 2: print("请输入对方帐号", end="") k = int(input()) num2 = 0 for u in crad_id: if k == u: break else: num2 += 1 if k == crad_id[num0]: print("【不能给自己转帐】") elif num2 == num: print("【帐号不存在】") else: print("转账金额:", end="") t = int(input()) if t > crad_money[num0]: print("【你余额不足】") else: crad_money[num0]-=t crad_money[num2]+=t print("【转账成功】") elif x == 3: break else: print("【密码错误】")