今晚做作业又做了好久,最后发现卡了很久都搞不清楚逻辑,原来是自己之前知识也掌握的不扎实。
而且学到第一部分的最后一个课时才想起来要及时复盘。
最后一个课时的题目如下:
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
困困加油!