我在这里有这个代码:
import re
def get_attr(str, attr):
    m = re.search(attr + r'=(\w+)', str)
    return None if not m else m.group(1)
str = 'type=greeting hello=world'
print get_attr(str, 'type')   # greeting    
print get_attr(str, 'hello')  # world
print get_attr(str, 'attr')   # None
哪个有效,但我不是特别喜欢这一行:
return None if not m else m.group(1)
在我看来,如果我们可以使用三元运算符,这看起来会更清晰:
return (m ? m.group(1) : None)
但那当然不存在.你有什么建议?
可能重复:
Python三元运算符
控制流操作符是否类似于'?' python中的C/C++?
如果有一大堆代码与此类似:
return n <= 1 ? n : fibo(n-1) + fibo(n-2)
会出现这样的错误:
File "fibonacci.py", line 2
    return n <= 1 ? n : fibo(n-1) + fibo(n-2)
                  ^
SyntaxError: invalid syntax
我一直在读这个地方,包括Python有三元条件运算符吗?.这应该是
result = a if a > b else b
是比更好的代码
result =  a > b and a or b
但没有人能解释为什么.有人请详细说明吗?
如果仅仅是可读性,那么这只是一个偏好问题:有些人会喜欢这个,有些人会喜欢对方.所以我的问题是:从一种方式到另一种方式是否有一些真正的技术优势.
我目前有以下列表:
data = [('b','..','o','b'),('t','s','..','t')]
我试图找出一种方法将“..”字符串的所有实例替换为另一个字符串。在我的例子中,字符串是“”。
我尝试使用以下方法使用内置函数,但没有成功。
newData = list(map(lambda i: str.replace(i, ".."," "), data))
有人能指出我正确的方向吗?我想要的输出如下:
newData = [('b',' ','o','b'),('t','s',' ','t')]
print ("How much does your meal cost")
meal = 0
tip = 0
tax = 0.0675
action = input( "Type amount of meal ")
if action.isdigit():
    meal = (action)
    print (meal)
tips = input(" type the perentage of tip you want to give ")
if tips.isdigit():
    tip = tips 
    print(tip)
我写过这个,但我不知道怎么弄
print(tip)
当有人输入一个数字时,它是一个百分比.
我有一个Markov转换表的输出,这是一个包含59个浮点数的59个列表的列表.我想反转每个非0浮点数,然后规范化输出,以便我再次列出一个概率列表,加起来为1.
我已经阅读了关于列表理解的教科书,这似乎是相关的,但我不能为我的生活理解如何实现它.
列表清单是 m
for i in range(59):
    [1/item for item in m[i] if item > 0.]
    i += 1
这会运行,但不会改变m.我item在这段代码中使用错了吗?我应该使用其他参考吗?
如果我有一个长度为 L=77 的字符串,我想将其填充到 N=10 的倍数的长度。我感兴趣的是计算所需的填充量。这可以很容易地用 来完成N - (L % N),除了L % N为零的情况。
我现在一直在使用以下内容:
pad = (N - (L % N)) % N
这看起来不是特别清晰,所以有时我使用
pad = N - (L % N)
if pad == N:
    pad = 0
使用三行代码来完成如此简单的事情似乎有些过分了。
或者,我可以找到kfor which k * N >= L,但使用math.ceil似乎也有点矫枉过正。
我缺少更好的选择吗?也许某个地方有一个简单的功能?
如何让特定的代码行在 while 循环中只执行一次?
我希望这条线:
 "Hello %s, please enter your guess: " %p1"只运行一次,而不是每次玩家猜错时运行。
是否有我可以使用的命令或功能,或者我是否必须以不同的方式构建整个游戏?这种形式的程序是否有简单的修复?
import random
number = random.randint(1,9)
p1 = input("Please enter your name: ")
count = 0
guess = 0
while guess != number and guess != "exit":
    guess = input("Hello %s, please enter your guess: " % p1)
    if guess == "exit":
        break
    guess = int(guess)
    count += 1
    if guess == number:
        print("Correct! It Took you only", count, "tries. :)")
        break
    elif guess > number:
        print("Too …我正在尝试对列表进行排序,将所有0移到列表的末尾.示例:[0,1,0,2,3,0,4] - > [1,2,3,4,0,0,0]
我看到有人在一行编码
list.sort(cmp=lambda a,b:-1 if b==0 else 0)
但我不明白括号内的意思.
有谁能告诉我?谢谢.
我只是看到python的if-else语句的替代构造,(0, 1)[ x > 5]并希望尝试递归,但由于某种原因,它不起作用.只是忘了它是unpythonic的片刻.
这是一个原始代码,我试图替换为替代:
def f(n):
    return 1 if n == 1 else n * f(n - 1)
替代方案,它会产生递归问题:
def f(n):
    return (n * f(n - 1), 1)[n == 1]
替代代码有什么问题?
python ×10
arrays ×1
cmp ×1
if-statement ×1
lambda ×1
list ×1
loops ×1
modulo ×1
nested-lists ×1
numpy ×1
padding ×1
python-3.x ×1
recursion ×1
replace ×1
sorting ×1
tuples ×1
while-loop ×1