相关疑难解决方法(0)

Python逻辑 - 如果是elif语句,则简化/更有效

我正在网上学习Python入门课程,并希望更有效地解决这个问题.

第1,第2,第3,第4,第5,第6,第7,第8,第9个词被称为序数形容词.编写一个程序,从输入读取1到9之间的整数x.程序应该输出对应于x的序数形容词.提示:您不需要9个单独的案件; 4就够了.

x = int(input())
if x == 1:
   print("1st")
elif x == 2:
   print("2nd")
elif x == 3:
   print("3rd")
elif x == 4:
   print("4th")
elif x == 5:
   print("5th")
elif x == 6:
   print("6th")
elif x == 7:
   print("7th")
elif x == 8:
   print("8th")
elif x == 9:
   print("9th")
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何在四行中更有效地写这个.它涉及清单吗?他们还没有教过列表或数组.

python if-statement

3
推荐指数
2
解决办法
2076
查看次数

如何在python脚本的条件下避免硬编码

我是python的新手.我有关于python脚本中的非硬编码对象名称(如果条件)的查询.我有水果= [苹果,芒果,菠萝,香蕉,橘子]和大小= [小,中,大]目前我写的代码如下:

if (fruit == apple, size == small): 
   statement 1
   statement 2
elif (fruit == apple, size == medium):
   statement 1
   statement 2
elif (fruit == apple, size == big):
   statement 1
   statement 2
elif (fruit == Mango, size == small):
   statement 1
   statement 2
elif (fruit == Mango, size = medium):
   statement 1
   statement 2
Run Code Online (Sandbox Code Playgroud)

如何避免编写多个if ... else条件?

声明1:从目录中提取与水果和大小相关的点文件路径结构是主目录/ fruit/collat​​eral/fruit_size.dot语句2:从目录中提取与水果和大小相关的txt文件路径结构为主-directory /源极/ readparamters/readparam/fruit_size.txt

我想一次一个地执行每个条件的语句.目前,我从用户那里获取水果和大小的输入.在python中有一种方法,脚本可以自动逐个组合并执行语句吗?我知道它有点复杂,python专家可以帮助我.

python

3
推荐指数
1
解决办法
1068
查看次数

如果声明更简单

我对Python的编码经验非常少,而且正在为Python编码类制作游戏.除了这个,我不知道任何复杂的东西.

有没有办法简化下面提供的代码中的if语句,可能只有一个if语句来减少重复?我有更多的这些将需要做更多而不是4个数字.谢谢.

import random
hero = random.randint(1,4)
if hero == 1:
    print 'Marth'
elif hero == 2:
    print 'Lucina'
elif hero == 3:
    print 'Robin'
else:
    print 'Tiki'
Run Code Online (Sandbox Code Playgroud)

python if-statement

3
推荐指数
1
解决办法
128
查看次数

当我运行程序时,"无"一直出现

每当我运行我创建的计算器程序时,它工作正常,但文本"无"一直出现,我不知道为什么.这是代码:

def add():
    print 'choose 2 numbers to add'
    a=input('add this')
    b=input('to this')
    print a+b
    return menu()
def sub():
    print 'choose 2 numbers to subract'
    a=input('subract this')
    b=input('from this')
    print b-a
    return menu()
def menu():
    print "hello, Welcome"
    print "these are your options"
    print "1. add"
    print "2. sub"
print menu()
loop=2
def sys():
    while loop==2:
        a=input("please choose")
        if a==1:
            print add()
        elif a==2:
            print sub()
        else:
            return menu(),sys()
print sys()
Run Code Online (Sandbox Code Playgroud)

这是输出:

hello, Welcome
these are your options
1. add …
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
1
解决办法
2938
查看次数

重写这些多个if语句的最有效方法

我知道这是一个荒谬的例子,但我正在寻找一种更有效的方法来编写这段代码.每个项目都会根据它所处的状态添加不同的值.这只是一个小片段.我可能希望将这个扩展到所有50个州,这将是很多if语句.我可以在函数中转储它,但是函数仍然会有所有的if语句.

Projects = [['Project A', 'CT', '', ''], ['Project B', 'MA', '', ''], ['Project C', 'RI', '', '']]

for project in Projects:
    if project[1] == 'CT':
        project[2] = project[0] + project[1]
        project[3] = '222'
    elif project[1] == 'MA':
        project[2] = '123'
        project[3] = None
    elif project[1] == 'ME':
        project[2] = '12323'
        project[3] = '333'
    elif project[1] == 'RI':
        project[2] = 'asdf'
        project[3] = '3333'
print Projects
Run Code Online (Sandbox Code Playgroud)

python if-statement python-2.7

2
推荐指数
1
解决办法
132
查看次数

Lambda与不同的列表元素一起使用

我试图通过使用Python中的switchments for switch语句中的以下示例来实现一个函数:

def f(x):
    return {
        '+': (lambda x: x[1] + x[2]),
        '-': (lambda x: x[1] - x[2])
    }[x[0]]

print(f(["+",2,3])) #Output should be 5. 

f(["-", 4, 1]) # Output should be 3.
Run Code Online (Sandbox Code Playgroud)

我显然做错了什么.也许有人对此有更好的建议?

编辑:

如果我想将lambda的输出保存在列表中然后返回它会怎么样?

例如:

def f(x, output):
    return {
        '+': (lambda x: x[1] + x[2]),
        '-': (lambda x: x[1] - x[2])
    }[x[0]]

output = [10, 20, 30, 40]

# to 2nd element in output list we add the last element in the list
print(f(["+",2,3], …
Run Code Online (Sandbox Code Playgroud)

python lambda functional-programming list

2
推荐指数
1
解决办法
55
查看次数

pythonic方式“默认”一个条件语句?

我有一个具有多个级别的if-elif-else结构,但是最后一级else始终是同一条语句:

if statement1:
    if something:
        do_thing()
    elif something_else:
        if something_something:
            do_thing_something()
        elif somethingg:
            do_thingg()
        else:
            do_default()
    else:
        do_default()
else: 
    do_default()
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用了do_default()3次,并且感觉有更好的方法。这基本上是一个defaultswitch-case其他语言中的语句,但是Python没有switch-case。我想知道是否还有其他方法可以更优雅地/“ Pythonly”解决此问题?还是使用字典或实现我自己的唯一方法switch-case

python switch-statement python-3.x

2
推荐指数
1
解决办法
66
查看次数

如何重构Python"switch语句"

我正在重构朋友写的一些代码,最近偶然发现了这个函数:

def setup_parameters(self, data):
    '''Parse raw data to determine game settings.'''
    for line in data.split('\n'):
      line = line.strip().lower()
      if line:
        tokens = line.split()

        self.L.debug("tokens: " + str(tokens))

        key = tokens[0]
        if key == 'cols':
          self.width = int(tokens[1])
        elif key == 'rows':
          self.height = int(tokens[1])
        elif key == 'player_seed':
          random.seed(int(tokens[1]))
        elif key == 'turntime':
          self.turntime = int(tokens[1])
        elif key == 'loadtime':
          self.loadtime = int(tokens[1])
        elif key == 'viewradius2':
          self.viewradius2 = int(tokens[1])
        elif key == 'attackradius2':
          self.attackradius2 = int(tokens[1])
        elif key == …
Run Code Online (Sandbox Code Playgroud)

python switch-statement

1
推荐指数
1
解决办法
535
查看次数

Python将版本号与动态比较说明符进行比较

给出两个版本号和一个比较说明符:

def check_versions(ver1, specifier, ver2):
    # TODO

check_versions("1.2.3", ">=", "2.0.0") # Should return True
check_versions("1.2.3", "==", "2.0.0") # Should return False
Run Code Online (Sandbox Code Playgroud)

我想将比较应用于两个版本,以便从上面得到预期的输出.

我发现,我可以比较使用的版本LooseVersiondistutils.version像这样:

LooseVersion("1.2.3") >= LooseVersion("2.0.0")
Run Code Online (Sandbox Code Playgroud)

但是如何让比较本身取决于传入specifier

我可以从这里使用解决方案:

def check_versions(ver1, specifier, ver2):
    return {
        '==': LooseVersion(ver1) == LooseVersion(ver2),
        '>=': LooseVersion(ver1) >= LooseVersion(ver2),
        '<=': LooseVersion(ver1) <= LooseVersion(ver2),
        '>': LooseVersion(ver1) > LooseVersion(ver2),
        '<': LooseVersion(ver1) < LooseVersion(ver2),
    }.get(x, False)
Run Code Online (Sandbox Code Playgroud)

但这对我来说真的很笨拙.有没有更优雅的解决方案?

python

1
推荐指数
1
解决办法
811
查看次数

python-如何在案例中使用间隔创建python的切换案例?

我是python的新手,我想创建一个switch case,其中case可以将间隔作为条件,例如:

switch = {
    1..<21: do one stuff,
    21...31: do another
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到这个结果?

python switch-statement python-3.x

1
推荐指数
1
解决办法
62
查看次数