我正在网上学习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的新手.我有关于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/collateral/fruit_size.dot语句2:从目录中提取与水果和大小相关的txt文件路径结构为主-directory /源极/ readparamters/readparam/fruit_size.txt
我想一次一个地执行每个条件的语句.目前,我从用户那里获取水果和大小的输入.在python中有一种方法,脚本可以自动逐个组合并执行语句吗?我知道它有点复杂,python专家可以帮助我.
我对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) 每当我运行我创建的计算器程序时,它工作正常,但文本"无"一直出现,我不知道为什么.这是代码:
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) 我知道这是一个荒谬的例子,但我正在寻找一种更有效的方法来编写这段代码.每个项目都会根据它所处的状态添加不同的值.这只是一个小片段.我可能希望将这个扩展到所有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中的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) 我有一个具有多个级别的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次,并且感觉有更好的方法。这基本上是一个default在switch-case其他语言中的语句,但是Python没有switch-case。我想知道是否还有其他方法可以更优雅地/“ Pythonly”解决此问题?还是使用字典或实现我自己的唯一方法switch-case?
我正在重构朋友写的一些代码,最近偶然发现了这个函数:
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) 给出两个版本号和一个比较说明符:
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)
我想将比较应用于两个版本,以便从上面得到预期的输出.
我发现,我可以比较使用的版本LooseVersion从distutils.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的新手,我想创建一个switch case,其中case可以将间隔作为条件,例如:
switch = {
1..<21: do one stuff,
21...31: do another
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到这个结果?