Python编程作业一:程序基本流程

简介: Python编程作业一:程序基本流程

一、多分支语句

       某商店出售某品牌的服装,每件定价132元,1件不打折,2件(含)到3件(含)打9折,4件(含)到9件(含)打8折,10件(含)以上打7折。请用键盘输入购买数量,屏幕输出总额(有小数时要求保留小数2位)。

price=132.0
num=int(input("请输入购买的服装数量:"))
if num==1:
    discount=1
elif 2<=num<=3:
    discount=0.9
elif 4<=num<=9:
    discount=0.8
elif num>=10:
    discount=0.7
cost=price*num*discount
print("购买{}件服装需要付款{:.2f}元".format(num,cost))

num=int(input(" ")):

通过input函数获取用户输入的购买数量,并将其转换为整数类型存储在变量num中。

二、判断闰年

       闰年分为普通闰年和世纪闰年,普通闰年是指能被4整除但不能被100整除的年份,世纪闰年是指能被400整除的年份。请编写一个程序,允许多次输入年份并判断是否是闰年,直到‘exit’为止。

例如:输入1900,输出为1900年不是闰年;输入2004,输出为2004年是闰年;输入2000,输出为2000年是闰年;输入‘exit’,退出程序。

while True:
    year=input("请输入一个年份:")
    if year=="exit":
        print("程序结束")
        break
    else:
        year=int(year)
        if year%4==0 and year%100!=0 or year%400==0:
            print("{}年是闰年".format(year))
        else:
            print("{}年不是闰年".format(year))

嵌套的分支语句,并使用了while循环,可以循环多次输入并判断闰年。使用break语句会提前结束本层循环。

三、猴子吃桃问题

       猴子吃桃子问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半多一个。到第10天早上想再吃时,就只剩下一个桃子了。求第一天共摘多少个桃子?


采用逆向思维,从后往前推断,发现其中有相同的地方,即出现递推公式,可以采用递归方法。

令S10=1,容易看出S9=2(S10+1),简化一下:

S9=2S10+2

S8=2S9+2

…..

Sn=2Sn+1+2

方法一:for循环

num=1
for i in range(10,0,-1):
    if i==1:
        print("第1天摘的总桃子数是{}".format(num))
    else:
        print("第{}天吃前还剩{}个桃子".format(i,num))
        num=(num+1)*2        #前一天吃前还剩的桃子数

注意:range函数的初值到终值是一个左闭右开区间,不包含终值!

方法二:递归方法

#递归
def chitaozi(n):
    if n == 1:
        return 1
    else:
        return (chitaozi(n-1)+1) * 2
num = chitaozi(10)
print("第一天共摘了{}个桃子".format(num))

四、上/下三角形乘法表

       利用循环语句和字符串格式化控制方法(format方法)分别实现上、下三角形乘法表的打印输出。

#下三角形乘法表
print("下三角形乘法表:")
for i in range(1,10):
    for j in range(1,i+1):
        print("{:}*{:}={:}".format(i,j,i+j),end='\t')
    print()
print()
#上三角形乘法表
print("上三角形乘法表:")
for i in range(1,10):
    for j in range(1,i):
        print('',end='\t')
    for k in range(i,10):
        print("{:}*{:}={:}".format(i,k,i*k),end='\t')
    print()

下三角形乘法表:对于每个 i,内层的 j 从1循环到 i ,输出 i*j 。外层的 for 循环控制i的取值范围为1~9。

上三角形乘法表:对于每个 i ,先通过一个空循环输出若干个制表符,使得每行的第 i 项能够对齐。然后内层的 k 从 i 循环到9,输出 i*k 。外层的 for 循环控制 i 的取值范围为1~9。

整个算法的时间复杂度为O(n^2),因为需要两个嵌套循环遍历九九乘法表的所有元素。但是由于n=9,所以并不会带来太大的性能问题。  

五、猜数字游戏

       完成猜数字游戏。每一轮游戏开始前,先询问游戏者是否开始游戏。如果游戏者给出了否定回答,则直接结束游戏。如果游戏者给出了肯定回答,则使用random库的randint方法随机产生一个1到30内的随机整数,然后提示游戏者从键盘输入一个1到30内的整数。如果游戏者输入的整数大于随机产生的整数,则程序提示猜大了;如果游戏者输入的整数小于随机产生的整数,则程序提示猜小了;如果游戏者输入的整数等于随机产生的整数,则程序提示猜中了。每一轮游戏,最多给5次猜的机会,如果猜中则需要显示经过几次猜中了,如果猜了5次还没猜中,程序提示本轮猜测失败并给出本轮正确的答案。


       程序可以支持多轮游戏,并且需要统计游戏战绩。当游戏结束时,能显示出游戏战绩(共玩了多少轮,其中猜中了多少轮)。

    运行结果应类似于(提示为了产生相同的运行数字,建议用random.seed(10)语句设置随机数种子)。

#猜数字游戏
import random
random.seed(10)        #设置随机数种子,多次运行允许出现可重复的运行结果
turn=0    #记录轮次
success=0    #记录成功次数
while True:
    turn+=1
    begin=input("开始第{}轮猜数字游戏吗?(y/n)".format(turn))
    if begin=='n':
        turn-=1
        break
        
    num=random.randint(1,30)    #产生要猜的随机数
    for i in range(1,6):
        print("进行第{}轮第{}次尝试:".format(turn,i))
        guess=int(input("请输入一个1到30范围内的正整数:"))
        if guess==num:
            print("恭喜,猜中了!本轮猜了{}次".format(i))
            success+=1
            break
        elif guess>num:
            print("加油,猜大了!本轮还可以猜{}次".format(5-i))
        elif guess<num:
            print("加油,猜小了!本轮还可以猜{}次.".format(5-i))
    else:
        print("第{}轮猜数字没有成功,本轮的正确结果{}".format(turn,num))
print("游戏结束,你的最终成绩是:猜了{}轮,猜中{}轮".format(turn,success))

random.randint(a, b):用于生成一个指定范围内的随机整数。在本例中,通过调用random.randint(1, 30)函数来随机产生一个1-30之间的数字。

for i in range(1,6)::使用for循环进行5次猜数字的机会。其中range(1,6)表示从1到5(不包含5)的整数序列。

在主程序中,通过while True:实现了无限循环,只有当用户输入'n'时才会跳出循环。同时,通过turn和success两个变量记录了游戏的轮次和成功次数,最终输出了游戏结束时的结果。  



目录
相关文章
|
6天前
|
存储 算法 数据库
Python 抽奖程序限定次数详解
构建Python抽奖程序,限定用户抽奖次数,使用字典存储用户ID及抽奖次数。`LotterySystem`类包含判断、记录和抽奖方法。当用户达到最大抽奖次数(默认3次)时,禁止继续。示例展示如何创建系统,模拟用户抽奖,并扩展功能如动态调整次数和多用户、多奖品池。性能优化可通过数据持久化和并发控制实现。
11 0
|
3天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
148 57
|
1天前
|
Python
Python多进程编程详细剖析
Python多进程编程详细剖析
11 3
|
3天前
|
数据采集 机器学习/深度学习 数据可视化
利用Python和Pandas库构建高效的数据分析流程
在数据驱动的时代,数据分析已成为企业决策的关键环节。本文介绍如何利用Python编程语言及其强大的数据分析库Pandas,构建一套高效且可扩展的数据分析流程。与常规的数据分析流程不同,本文不仅涵盖数据加载、清洗、转换等基础步骤,还强调数据可视化、模型探索与评估等高级分析技巧,并通过实际案例展示如何在Python中实现这些步骤,为数据分析师提供一套完整的数据分析解决方案。
|
3天前
|
数据采集 机器学习/深度学习 数据挖掘
利用Python实现高效的数据清洗与预处理流程
本文旨在探讨如何使用Python编程语言及其强大的数据处理库(如pandas、numpy等)来构建一个高效且灵活的数据清洗与预处理流程。与常规的数据清洗方法不同,本文不仅关注于传统的缺失值填充、异常值处理、数据类型转换等步骤,还引入了数据质量评估、数据特征选择以及自动化处理流程的设计等高级主题。通过实际案例和代码演示,本文将为读者提供一套完整的数据清洗与预处理解决方案,助力数据分析师和数据科学家在数据探索阶段更加高效、准确地处理数据。
|
6天前
|
网络安全 网络虚拟化 数据安全/隐私保护
使用Python实现VPN搭建的流程步骤
保护个人隐私和数据安全变得尤为重要。VPN(虚拟私人网络)是一种有效的解决方案,可以帮助我们在网络上匿名浏览,保护数据传输的安全性。虽然市面上有许多商业VPN服务,但你也可以通过Python自己搭建一个简单的VPN。本文将介绍如何用Python建立自己的VPN。
|
8天前
|
开发者 Python
【干货】Python编程惯例
【干货】Python编程惯例
13 1
|
10天前
|
Shell Python
GitHub星标破千Star!Python游戏编程的初学者指南
Python 是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种,与其说是教编程的书,倒不如说是在教“游戏制作软件”,或教授使用一种呆板的语言,使得编程“简单”到不再是编程。而第二种,它们就像是教数学课一样教编程:所有的原理和概念都以小的应用程序的方式呈现给读者。
|
5天前
|
IDE Shell 程序员
[人间也值得] - Mryang带你快速入门第一个 Python 程序
[人间也值得] - Mryang带你快速入门第一个 Python 程序
5 0
|
10天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!