2015-02-05 45 views
-1

如何在python中编写以下while循环?python中的测试用例如C语言编程

int v,t; 
while (scanf("%d %d",&v,&t)==2) 
{ 
    //body 
} 
+1

你能告诉我们你有什么到目前为止已经试过? – 2015-02-05 19:17:55

+0

其实我想用这个循环来解决uva问题10071(http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1012) – Neo 2015-02-05 19:22:24

+0

如果你查找while循环的语法 - 它几乎是一样的。 – neil 2015-02-05 19:26:17

回答

2

Python是比C更高级别的语言,通常会针对这种情况使用不同的模式。有一个被删除的问题实际上与你的C代码段具有完全相同的行为 - 因此会是“正确的”,但它变得如此丑陋一段Python中的代码,它的速度很低。

因此,首先要做的事情是2015年,人们不能简单地在提示符处查看C的“scanf”,并且应该输入两个以空格分隔的整数 - 你最好给出一条消息。另一大区别在于,在Python中,变量赋值被视为语句,并且不能在表达式中完成(在这种情况下为while表达式)。所以你必须有一个始终为真的while表达式,并决定是否稍后中断。

因此,你可以像这样的模式。

while True: 
    values = input("Type your values separated by space, any other thing to exit:").split() 
    try: 
     v = int(values[0]) 
     t = int(values[1]) 
    except IndexError, ValueError: 
     break 
    <body> 
+0

的确,除非常罕见的例外情况,Python中的while循环不是惯用的,除非它以'while true:'开头。 – 2015-02-05 19:34:42

0

这取代你的代码的行为:

import re 

while True: 
    m = re.match("(\d) (\d)", input()): 
    if m is None: #The input did not match 
     break #replace it with an error message and continue to let the user try again 
    u, v = [int(e) for e in m.groups()] 
    pass #body