无论如何要简化这个我没有看到的决策结构吗?在我看来,每个陈述都是确定正确顺序所必需的。任何见解都会非常感激。
def main():
again = 'y'
while again == 'y' or again == 'Y':
str_1 = input('Enter string 1: ')
str_2 = input('Enter string 2: ')
str_3 = input('Enter string 3: ')
first = min(str_1, str_2, str_3)
print(first)
again = input('Another? ')
def min(str1, str2, str3):
# str1 < str2 < str3
if str1 < str2 and str2 < str3:
low = str1
# str1 < str3 < str2
elif str1 < str3 and str3 < str2:
low = str1
# str2 < str1 < str3
elif str2 < str1 and str1 < str3:
low = str2
# str2 < str3 < str1
elif str2 < str3 and str3 < str1:
low = str2
# str3 < str1 < str2
elif str3 < str1 and str1 < str2:
low = str3
# str3 < str2 < str1
elif str3 < str2 and str2 < str1:
low = str3
return low
main()
答案 0 :(得分:2)
low=str1
if str2 < low
low = str2
elif str3 < low
low = str3
答案 1 :(得分:1)
已经有一个名为min()
def main():
again = 'y'
while again.lower() == 'y':
str_1 = input('Enter string 1: ')
str_2 = input('Enter string 2: ')
str_3 = input('Enter string 3: ')
first = min(str_1, str_2, str_3)
print(first)
again = input('Another? ')
运行时:
Enter string 1: 5 Enter string 2: 8 Enter string 3: 3 3 Another? N
既然你已经澄清了这是一种做法,那么还有另外一种方法:
if str1 < str2 and str2 < str3:
low = str1
可以:
if str1 < str2 < str3:
low = str1
来自docs:
比较可以任意链接,例如,x <1。 y&lt; = z等于x&lt; y和y&lt; = z,除了y仅被评估一次(但在两种情况下,当x&lt; y被发现为假时,根本不评估z。)
答案 2 :(得分:0)
内置函数min()
已经比你的更好了。所以回答你的问题 - 是的,你可以简化它!
def main():
while True:
strs = [input('Enter string {}: ').format(i) for i in range(1,4)]
print(min(strs)) # first
if input('Another? ') in "yY":
break
答案 3 :(得分:0)
如果您正在寻找最小的树,那么有许多无用的测试......例如
if str1 <= str2:
if str1 <= str3:
low = str1
else:
low = str3
else:
if str2 <= str3:
low = str2
else:
low = str3
即。你只需要2个比较操作来决定什么是最小值(虽然有6个排序只有三个可能的最小值,这就是为什么两位信息就足够了)。换句话说,如果你知道一个元素小于其他元素你不关心那两个元素之间的相对顺序。
即使在你的表格中,也需要的案例更少:
if str1 <= str2 and str1 <= str3:
low = str1
elif str2 <= str1 and str2 <= str3:
low = str2
else:
low = str3
然而,使用的典型形式(在增加元素数量时可以更好地扩展)是:
low = x1
if x2 < low: low = x2
if x3 < low: low = x3
...
if xN < low: low = xN