全民一起玩Python基础篇第三课:流程控制基础

判断语句

题目描述

如果输入的数字为1,则打开小说,如果数字为2,则打开音频

import os
# 导入系统模块
a=int(input('请输入数字,1看小说,2听歌:'))
# 输入值
print('你选择的是',a)
# 显示输入的值
if a==1 :
# 判断a是否等于1
      os.system( ' start D:/全民一起玩Python/斗罗大陆.txt' )
elif a==2 :
# 判断是否等于2
      os.system( ' start D:/全民一起玩Python/CET6-2015.6.mp3' )
else :
      print('你的输入有误')
print('Over!')

注意:
写if的时候,后面空一格,最后还有一个冒号
Python中没有类似 End if 的表达,语句结束是考缩进是否在一层决定的
最好不要用tab来缩进,因为不同编辑器缩进默认的空行格数不同,可能造成出错

嵌套语句

题目一

在上节课编写的“升级版方程计算器”中,如果用户输入了“无解方程”(比如 x^2 + x + 1 = 0),则提示“无实数解”并拒绝计算。不过事实上,即使 b^2-4ac 小于 0 ,python也能自动按照虚数运算法则计算出结果(例如 “ 2 + 0.8j ”,其中 “j” 就是高中数学里表示虚数的 “i” )。
所以请再次升级该程序,使之按以下规则运行:
先判断方程是否有解。如果发现方程有实数解,则正常计算并给出结果。
如果在 1 中判断结果为无实数解,则提示“此方程无实数解,是否需要虚数解?(Y/N):”,并接收用户输入。
如果用户输入为 “Y” 或 “y”,则仍然执行计算并给出结果(算式与实数解时完全相同);否则显示 “方程无实数解”。

a = int(input('请输入参数a:'))
b = int(input('请输入参数b:'))
c = int(input('请输入参数c:'))

if b**2 >= 4*a*c :
  print( (-b + (b**2 - 4*a*c)**0.5 )/ (2*a) )
  print( (-b - (b**2 - 4*a*c)**0.5 )/ (2*a) )
else :
  k = input('无实数解,请问是否需要虚数解(Y/N):')
  if k=='Y' or k=='y' :
    print( (-b + (b**2 - 4*a*c)**0.5 )/ (2*a) )
    print( (-b - (b**2 - 4*a*c)**0.5 )/ (2*a) )
  else:
    print('方程无实数解')

题目二

请编写一个判断闰年或平年的程序,运行后由用户输入一个整数(比如2008),然后自动输出类似 “2008是闰年” 的信息。
闰年的判断方法为:如果一个数字可以被4整除,同时不能被100整除,那么这一年就是闰年。但是,如果这个数字可以被400整除,那么它仍然是闰年。
请分别使用 elif 、嵌套if 以及 单条if语句结合逻辑运算 等三种方式实现本作业。
运行时请先使用以下几个年份测试程序是否正确:
1996年是闰年
1998年是平年
2000年是闰年
2100年是平年

s=str(1)
i=0
while  not(s=='END'):
    a=int(input('请输入 一个年份\n'))

    if (a%4==0 and not a%100==0) or (a%400==0) :
        print('该年份是闰年\n')
    else :
        print('该年不是闰年\n')
    print('是否继续使用\n')
    i=i+1
    s=input('输如END退出,其余任意键继续\n')
print('本次共计算了',i,'个年份\n')
print('程序执行结束')

while循环

题目一

请修改上一节编写的“判断闰年”程序,使之能够循环运行:程序启动后用户可以反复多次输入年份,并获知其是否为闰年。只有当用户输入“END”时,程序才结束退出。

s=str(1)
i=0
while  not(s=='END'):
    a=int(input('请输入 一个年份\n'))

    if (a%4==0 and not a%100==0) or (a%400==0) :
        print('该年份是闰年\n')
    else :
        print('该年不是闰年\n')
    print('是否继续使用\n')
    i=i+1
    s=input('输如END退出,其余任意键继续\n')
print('本次共计算了',i,'个年份\n')
print('程序执行结束')

题目二

请修改第五回中编写的“复利计算”程序:用户不仅输入本金与利率,而且还要输入一个“最大借款年数”。程序将会输出从第一年到最大借款年之间每年度的欠款总额。效果如下:
请输入本金:100
请输入年利率:0.2
请输入最大借款年数:5
第 1 年欠款总额为 120
第 2 年欠款总额为 144
第 3 年欠款总额为 172
第 4 年欠款总额为 207
第 5 年欠款总额为 248

a=int(input('请输入本金:'))
b=float(input('请输入年利率:'))
c=int(input('请输入最大借款年数:'))
i=1
while int(i)<=c:
    a=a*(1+b)   
    print('第',i,'年欠款金额为',int(a),'元')
    i=i+1

随机数

import os
import random

note=random.randint(1,1000)
guess=-1

i=0
#计数器
while guess !=note:
    i=i+1
    #计算数字加号相加,面对字符串,起到连接的作用
    guess=int(input('请猜测一个数字(1-1000)?\n'))
    #必须强制类型转换,不然容易引起歧义,如果要生成字符串,也要str()
    if guess >note :
        print('数字有点大,请猜小一点\n')

    elif guess < note :
        print('数字有点小,请猜大一点\n')

    else :
        print('恭喜你猜对了')
print('一共猜了',i,'次')

水仙花数

求解“水仙花数”是一道非常经典的循环练习题。如果一个三位数( 100 —— 999 )等于它每一位数字的立方和,则称这个数为“水仙花数”。比如 153 = 1^3 + 5^3 + 3^3,所以 153 就是一个水仙花数。
本题的正确输出结果应当包括四个数字: 153 370 371 407

import math

i=100
while i<1000 :
    t=i
''' 这个可以跨行写注释
'''
    a=int(t/100)
    t=int(t%100)
    b=int(t/10)
    c=int(t%10)
    # 取百位十位和各位
    if i==a**3+b**3+c**3 :
        print(i,'是一个水仙花数\n')
    i=i+1

程序调试

各种现代开发环境都提供了集成调试工具。在IDLE中可以按照以下步骤启动调试器:
进入Python Shell命令行窗口(在代码编辑器菜单选“Run”——“PythonShell”)
在命令行窗口菜单中选“Debug”——“Debugger”,弹出Debug Control窗口
在Debug Control窗口中选中“Source”复选框
在Debug Control窗口中按下“Step”按钮
Debug Control 窗口中各个按钮含义如下:
Go按钮:直接运行代码,直到遇到断点或程序结束为止
Step按钮:单步执行,即只执行一步程序(代码窗口中的灰色高亮条即所执行语句)
Over按钮:假如当前执行的代码要调用某个函数,那么点击Step会进入该函数的代码,而Over则不会进入该函数,直接取得其结果
Out按钮:假如当前执行语句位于某个被调用函数(比如print)的内部,则按下Over后会将该函数全部执行完并返回到调用方
在单步执行过程中,可以随时在 Debug Control 窗口的最下面看到各个变量的当前数值,从而分析出问题所在。
可以在代码编辑器上右键点击某行代码,选择“set breakpoint”在此行设置断点。程序中可以设置多个断点,右键“clear breakpoint”可以清除所有断点。

Assert关键字

用来确保某一行必须通过,如果不通过,程序直接崩溃

assert 3>4
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AssertionError
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值