【问题标题】:Python: why "breaking while loop if no input" do not pass testcasePython:为什么“如果没有输入就打破while循环”不通过测试用例
【发布时间】:2015-12-19 05:58:18
【问题描述】:

这里有两个相同的 C++ 和 Python 代码:函数必须重复执行,直到没有输入。 C++ 代码通过,但 Python 代码没有通过测试用例。 python代码有什么问题?谢谢

python 代码:

def func(n):
    if n==1:
        return 1
    else:
        s=(n+1)//2
        return s*s + func(n//2)

while True:
    n=input()
    if n=='':
        break
    else:
        print(func(int(n)))

c++代码:

#include <bits/stdc++.h>
using namespace std;
long long fun(long long n){
    if(n==1)
        return 1;
    long long s=(n+1)/2;
    return s*s+fun(n/2);
}
int main(){
    long long n;
    while(cin>>n)
    cout<<fun(n)<<endl;
}

【问题讨论】:

  • 解释一下“通过测试用例”对你意味着什么。 “通过” TC 的标准是否只是退出循环?
  • 为什么在python代码中使用//2
  • @aliasm2k:要……将整数除以二?
  • 我认为/2 应该可以工作。想知道为什么//2 是必不可少的。无论如何,谢谢:)
  • 您的输入是多行吗? cin &gt;&gt; n 将读取一个单词,input() 将读取一行。

标签: python python-3.x testcase


【解决方案1】:

我会将您拥有的内容转换为sentinel loop

def func(n):
    if n==1:
        return 1
    else:
        s=(n+1)//2
        return s*s + func(n//2)
val = input()
## ^^^^ ^^ This can be anything not ''
while val!='':
      print(func(int(val)))
      val=input()

【讨论】:

  • 根据个人喜好进行微调,但不会改变功能或回答问题。
  • '“如果没有输入则中断 while 循环”不通过测试用例'。我相信是的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2020-03-28
  • 2019-08-24
  • 2016-09-13
相关资源
最近更新 更多