Python技术问询:如何仅用if和else编写程序找出四个输入的最小值
问题分析与解决
先看你两个程序的报错原因
第一个程序的错误
- 输入报错:
ValueError是因为你输入的内容不是合法整数,比如输入了字母、汉字或者带小数点的数,int()只能转换纯整数格式的字符串。 - 逻辑漏洞与规则违反:你用了
elif,违反题目要求;另外如果有多个数值相等(比如x和b都是最小值),所有if/elif的条件都不满足,会错误输出d。
第二个程序的错误
你把变量赋值逻辑搞反了,n1=int是把n1指向了int这个类型对象,不是存储a或b的数值。正确的写法应该是if a < b: n1 = a else: n1 = b,而不是a=n1。后面重复赋值n1=int,最后比较的是两个类型对象,自然触发TypeError。
符合要求的正确代码
按照要求只用if和else,不用elif、min、list,思路是两两逐步比较,保留当前最小值:
# 获取四个输入(如果需要支持小数,把int改成float即可) a = int(input()) b = int(input()) c = int(input()) d = int(input()) # 第一步:找出a和b里的较小值 if a < b: current_min = a else: current_min = b # 第二步:把当前最小值和c比较,更新最小值 if c < current_min: current_min = c else: # 当前最小值更小,不用修改 pass # 第三步:把当前最小值和d比较,更新最小值 if d < current_min: current_min = d else: pass print(current_min)
或者更简洁的写法(去掉pass,用反向判断,同样符合规则):
a = int(input()) b = int(input()) c = int(input()) d = int(input()) # 比较a和b if a < b: temp = a else: temp = b # 比较temp和c if temp > c: temp = c # 比较temp和d if temp > d: temp = d print(temp)
内容的提问来源于stack exchange,提问作者aetherae
相关产品推荐
相关产品推荐

