学习笔记 | Coursera - Getting Started with Python

今晚做作业又做了好久,最后发现卡了很久都搞不清楚逻辑,原来是自己之前知识也掌握的不扎实。

而且学到第一部分的最后一个课时才想起来要及时复盘。

最后一个课时的题目如下:

Write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch it with a try/except and put out an appropriate message and ignore the number. Enter 7, 2, bob, 10, and 4 and match the output below.

大意就是

1. 让用户输入数字,直到输入“done”,则结束程序

因为需要不断prompt用户,让他们输入,所以这里就用到这个课时学习到的while循环

一开始还想着用for,折腾了一个多小时才发现根本就不可以。for应该是在提前给定一个特定的数组,string中才可以执行的,而不是通过用户随即输入而确定。(目前理解是这样,以后可能会发现自己是错的。。。)

此处应是while + break

while True:
	num = input()
	if num == "done":
		break

 

2. 保险措施:防止用户乱输入

因为我们本段程序的目标是对数字进行处理,所以需要对用户输入的数据进行保险,防止用户加上乱七八糟的字符。

故此处使用try&except,防止用户输入非数字后,程序blowup。

而输入的数字部分,则记得要转按需换:用int或者float

#先定义:
while True:
    num = input()
    try: 
        [ 程序主体要进行数据处理的部分 ]
    except:
        if num == "done":
            break
        else:
            print("Invalid input")
            continue

 

3. 对用户输入的数据进行处理

这里题目的要求是判断用户输入的数字的最大值和最小值

需要在while的循环中对循环进行分流判断。

此处判断值,用到if和if/else函数。

需要注意因为这里用户输入的都是数字,但还是要都转换一下格式,确保可以比较,才不会blow up。此处用到int或者float。

判断最大值和最小值的代码套路:

定义一个目标数 = None

Ex. 

#先定义
the_num = None

#最大值:
if the_num is None:
    the_num = num
elif num > the_num:
    the_num = num

#最小值:
if the_num is None:
    the_num = num
elif num < the_num:
    the_num = num

#主要区别在于elif这一步是大于号or小于号

综上,具体处理代码如下:

#先定义:
smallest = None
largest = None

#开始让用户循环输入:
while True:
    #记得判断输入的是否是数字,若不是则int程序会bug
    num = input()
    try:
        num = int(num)
        #此处开始第一次if判断,找最小值
        if smallest is None:
            smallest = num
        elif smallest > num:
            smallest = num
        #第二套平行的if-判断执行,找最大值
        if largest is None:
            largest = num
        elif largest < num:
            largest = num
            
    #若用户输入非数字,会来到except进行处理:
    except:
        #如果输入的是done,结束循环
        if num == "done":
            print("Maximum is", largest)
            print("Minimum is", smallest)
            break
        #如果输入的是其他,则提示用户输入错误
        else:
            print("Invalid input")
            #随后回到循环开头,继续下一个数的处理和判断
            continue

 

 

此外,今天在做题的时候才发现自己一直对if语句的理解有误。今天要重新整理一下:

if:对命题的是/否进行判断,如果是,则往下执行指令

n = input()
#这里input后是一个string,记得转成数字才能比较!
n = float(n)
if n > 0:
    print("positive")

elif: 与if联用,两者构成地位相等的两个判断条件

n = input()
n = float(n)
if n > 0:
    print("positive")
elif n < 0:
    print("negative")

else: 同样要与if联用出现,用来处理if条件为否的情况

n = input()
n = float(n)
if n > 0:
    print("positive")
else:
    print("Plz enter a positive number")

if、elif、else可以联用

n = input()
n = float(n)
if n > 0:
    print("positive")
elif n < 0:
    print("negative")
else:
    print("This is a zero")

#但注意一个if判断中可以跟着无数个elif,但最后只能有一个else做结尾。
#可以理解为if和else是一个文章的开头和结尾
#如果想要执行两套独立的判断,要重起一个if,像上文判断最大和最小一样

好困,就到这里!886

困困加油!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值