在python中简化if条件

vxf3dgd4  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(176)

有没有一个简洁的方法来简化这个if语句?我需要n〉= 2且〈= 100,并且value每隔7步增加1(除了第一步应该在2和7之间,最后一步应该在98和100之间)。

if n >= 2 and n <= 7:
    value = 1
elif n > 7 and n <= 14:
    value = 2
elif n > 14 and n <= 21:
    value = 3
elif n > 21 and n <= 28:
    value = 4
elif n > 28 and n <= 35:
    value = 5
elif n > 35 and n <= 42:
    value = 6
elif n > 42 and n <= 49:
    value = 7
elif n > 49 and n <= 56:
    value = 8
elif n > 56 and n <= 63:
    value = 9
elif n > 63 and n <= 70:
    value = 10
elif n > 70 and n <= 77:
    value = 11
elif n > 77 and n <= 84:
    value = 12
elif n > 84 and n <= 91:
    value = 13
elif n > 91 and n <= 98:
    value = 14
elif n > 98 and n <= 100:
    value = 15

编辑:此外,我很难从下面的问题中找到可能的最小数:
火柴棍是表示数字的理想工具。用火柴棍表示十位小数的常用方法如下:

这与普通闹钟上显示数字的方式是一样的。使用给定数量的火柴棒,您可以生成各种数字。我们想知道使用所有火柴棒可以生成的最小和最大数字是多少。

  • 输入:*

第一行上有一个正数:测试用例的数量,最多100个。之后,每个测试用例:
具有整数n(2〈= n〈= 100)的一行:你有多少根火柴。

  • 输出:*

每个测试用例:
在一行中包含您可以创建的最小和最大数字,用一个空格分隔。这两个数字都应该是正数,并且不包含前导零。
我已经尝试了多种不同的方法来尝试解决这个问题,我目前正在尝试:
1.找出最小数字的最小位数(值):

快速

def values(n):
    if 2 <= n <= 100:
        value = (n + 6) // 7
    minimum(n, value)

1.现在我想把value发送给函数minimum(),它会生成value长度的所有不同的数字组合。我想把所有这些数字存储在一个列表中,然后用min()来得到最小的一个。我还没有让这部分工作起来,希望能得到一些启发。
需要记住的是,数字不能以0开头。

sbtkgmzw

sbtkgmzw1#

if 2 <= n <= 100:
    value = (n+6)//7

除非我弄错了,否则这应该适用于第2部分:

numdict = {2:1,3:7,4:4,5:2,6:0,7:8,8:10,9:18,10:22,11:20,12:28,13:68}

def min_stick(n):
    if 2 <= n <= 13:
        return numdict[n]
    digits = (n + 6) // 7
    base = str(numdict[7+n%7])
    return int(base+"8"*(digits - len(base)))

而且,虽然这是一个不用动脑筋:

def max_stick(n):
    if n%2:
        return int("7"+"1"*((n-3)//2))
    return int("1"*(n//2))
qf9go6mv

qf9go6mv2#

下面是一种简化在Python中提供的if语句的方法:

value = (n // 7) + 1 if 2 <= n <= 100 else None

此程式码使用整数除法(“//”运算子)将“n”的值除以7,并将结果加1。如果“n”的值小于或相等100,则会给予与原始if陈述式相同的结果。否则,会将“value”设定为None。
下面是此代码如何工作的示例:

# n = 14
value = (14 // 7) + 1  # This evaluates to 2

# n = 100
value = (100 // 7) + 1  # This evaluates to 15

# n = 101
value = (101 // 7) + 1  # This evaluates to None

我希望这对你有帮助!如果你有任何其他问题,请告诉我。

相关问题