当前位置: 首页 > 知识库问答 >
问题:

基于第三个变量值设置2个变量的智能方法,无需使用if[duplicate]

范弘亮
2023-03-14

我有一个代码,我在whichweek中传递一个值,然后它返回dayfdayt的值。我正在使用if语句,但它很长,一点都不“pythonic”。有什么优雅的方式来写这个吗?

我是这样做的:

if whichweek == 5:
    dayf = 0
    dayt = 32
elif whichweek == 1:
    dayf = 0
    dayt = 8
elif whichweek == 2:
    dayf = 7
    dayt = 15
elif whichweek == 3:
    dayf = 14
    dayt = 22
elif whichweek == 4:
    dayf = 21
    dayt = 29

谢谢帮忙。

共有3个答案

申查猛
2023-03-14

我会使用字典:

days = {
    5: (0, 32),
    1: (0, 8),
    2: (7, 15),
    3: (14, 22),
    4: (21, 29)
}

dayf, dayt = days[whichweek]
景靖琪
2023-03-14

是的,很少有人能让它更像python,我会用一本字典来整理所有的数据,比如:

import random

if __name__ == "__main__":
    random.seed(1)

    week_data = {
        1: (0, 32),
        2: (0, 8),
        3: (7, 15),
        4: (14, 22),
        5: (21, 29)
    }

    for i in range(10):
        whichweek = random.randint(1, 5)
        dayf, dayt = week_data[whichweek]
        print whichweek, dayf, dayt

如果你想处理错误,你可以使用这样的东西:

import random

if __name__ == "__main__":
    random.seed(1)

    week_data = {
        1: (0, 32),
        2: (0, 8),
        3: (7, 15),
        4: (14, 22),
        5: (21, 29)
    }

    for i in range(10):
        whichweek = random.randint(1, 10)
        res = week_data.get(whichweek, None)

        if res is None:
            print("Error: {0} is not in week_data".format(whichweek))
        else:
            dayf, dayt = res
            print whichweek, dayf, dayt

最后,如果要避免条件检查,请始终返回如下值:

import random

if __name__ == "__main__":
    random.seed(1)

    week_data = {
        1: (0, 32),
        2: (0, 8),
        3: (7, 15),
        4: (14, 22),
        5: (21, 29)
    }

    for i in range(10):
        whichweek = random.randint(1, 10)
        dayf, dayt = week_data.get(whichweek, (None, None))
        print whichweek, dayf, dayt
戴博
2023-03-14
weeks = {1: (0, 8)}
try:
    dayf = weeks[1][0]
    dayt = weeks[1][1]
except (KeyError, IndexError):
    pass
 类似资料:
  • 我有一个包含单选按钮选项的表单,我想用它来指示一组变量的值。 单选按钮如下: 我能够回声单选按钮的值 所以我确信变量正在被继承。由于我将 $_POST 值传递给元素,以便用户看到选择了哪个值,因此我想我会使用元素 ID 来获取我的 if-else 语句的值。 下面是我的if-else语句的样子: 然后,我将此URL传递给一个按钮,该按钮有一个空的href,其中包含以下行: 但是,每当我单击链接时,

  • 本文向大家介绍Python3之不使用第三方变量,实现交换两个变量的值,包括了Python3之不使用第三方变量,实现交换两个变量的值的使用技巧和注意事项,需要的朋友参考一下 method 1: method 2: 以上这篇Python3之不使用第三方变量,实现交换两个变量的值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 在两行中编写一段代码,即交换两个变量而不使用第三个变量。在java中有可能吗

  • 问题内容: 我在Javascript中有一组全局计数器变量: 等等 然后,我有了一个Javascript函数,该函数接受一个映射到这些全局计数器的“索引”数字。在此函数内部,我需要使用传递给该函数的“索引”值来读写这些全局计数器。 我希望它如何工作的示例,但当然根本不起作用: 我希望我要实现的目标是明确的。如果没有,我会尽力澄清。谢谢。 编辑说明: 我不是要增加计数器的名称,而是要增加计数器包含的

  • #include <stdio.h> int func(void) { int i = 2; return i; } int main(void) { int a = 0; a = func(); printf("%d\n", a); return 0; } 技巧 在gdb中,可以用“set var variable=expr”命令设置变量

  • 我只是在学习编码,所以我遇到了“k不能解决”的问题。 我以前尝试过引入变量,如果运算符by: 我预期输出为2 相反,无法解析got k