Python基础

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("【密码错误】")
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值