为什么我不能在Hackerrank中得到正确的答案? - Python 3

时间:2016-05-02 17:20:56

标签: python python-3.5

我正在创建一个程序来解决测试用例#1中提出的问题。但是我在测试案例#2中总是得到一个错误的答案,因为我从来不知道什么是测试用例#2!

为什么我在第二种情况下出错?

这是问题和我的回答:

  

任务   在下面的编辑器中完成代码。变量i,d和s已经为您声明和初始化。您必须声明3个变量:一个是int类型,一个是double类型,另一个是String类型。然后你必须从stdin读取3行输入并初始化你的3个变量。最后,您必须使用+运算符执行以下操作:

     

在新行上打印i加上int变量的总和。   将d加上双变量的总和打印到新行上一位小数的比例。   使用您读取的字符串连接s并将结果打印在新行上。

测试用例#1 - 预期输出:

  
    

16

         

8.0

         

HackerRank是学习和练习编码的最佳场所!

  

+测试用例#2 - 预期输出:

  
    

7

         

6.8

         

是我最喜欢的平台!

  

这是我的代码:

def test_case_1():
        ii = int()
        dd = float()
        ss = str()
        i = 4
        d = 4.0
        s = 'HackerRank '
        ii = 12
        dd = 4.0
        ss = "is the best place to learn and practice coding!"
        total_int = i + ii
        print (total_int)
        total_double = d + dd
        print(total_double)
        print (s + ss)
        memory = open('memory.txt', 'w')
        memory.write("1")
        memory.close()
def test_case_2():
        ii = int()
        dd = float()
        ss = str()
        i = 4
        d = 4.0
        s = 'HackerRank '
        ii = 3
        dd = 2.8
        ss = "is my favorite plataform!"
        total_int = i + ii
        print (total_int)
        total_double = d + dd
        print(total_double)
        print (s + ss)
        memory = open('memory.txt', 'w')
        memory.write("0")
        memory.close()
def starting():
    memory = open('memory.txt', 'r')
    ted = []
    for line in memory:
        ted.append(line)

    memory.close()
    return ted

def test(ted, main):
    if ted == ['0'] :
        test_case_1()

    elif ted == ['1'] :
        test_case_2()


def main():
    try:
        memory = open('memory.txt', 'r')
        memory.close()

    except:
            memory = open('memory.txt', 'w')
            memory.write("0")
            memory.close()


    pronto = starting()
    test(pronto, main)


main()

4 个答案:

答案 0 :(得分:3)

你正在思考the problem。您将获得必须从标准中读取的示例输入。

它还说变量i,d和s已经为你声明和初始化,所以你不应该对这些值进行硬编码。

此代码可以使用,但要确保您真正了解它,而不仅仅是复制粘贴。

import sys

i2 = int(sys.stdin.readline())
d2 = float(sys.stdin.readline())
s2 = sys.stdin.readline()

# Print the sum of both integer variables on a new line.
print(i+i2)
# Print the sum of the double variables on a new line.
print(d+d2)
# Concatenate and print the String variables on a new line
# The 's' variable above should be printed first.
print(s+s2)

答案 1 :(得分:1)

谢谢cricket_007!为了真实,我理解并在Python中使用自己的代码。看:

def printing():
        i = int()
        d = float()
        s = str()
        ii = 4
        dd = 4.0
        ss = 'HackerRank '
        i = int(input())
        d = float(input())
        s = str(decide(i))
        total_int = i + ii
        print (total_int)
        total_double = d + dd
        print(total_double)
        print (ss + s)
        memory = open('memory.txt', 'w')
        memory.write("0")
        memory.close()

def decide(val):
    if val == 12 :
        quote = "is the best place to learn and practice coding!"

    elif val == 3 :
        quote = "is my favorite platform!"
        
    return quote


def main():
    memory = open('memory.txt', 'w')
    memory.write("0")
    memory.close()
    printing()


main()

答案 2 :(得分:0)

按照评论中的内容进行操作,您无需执行任何操作 通常在python中以u调用方式进行输入 你会得到结果的, python的代码如下:

i = 4
d = 4.0
s = 'HackerRank '
i1=int(input())
d1=float(input())
ss=input()
print(i+i1)
print(d+d1)
print(s+ss)

以下代码适用于C:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int i = 4;
    double d = 4.0;
    char s[] = "HackerRank ";
    char st[200];
    int i1;
    double d1;
    char str[100];
    scanf("%d",&i1);
    scanf("%lf",&d1);
    scanf(" %[^\n]",str);
    printf("%d\n",i+i1);
    printf("%.1lf\n",d+d1);
    strcpy(st,s);
    strcat(st,str);
    printf("%s",st);    
    return 0;}

答案 3 :(得分:0)

    int i1 = scan.nextInt();
    double d1 = scan.nextDouble();
    String s1 = scan.next();
    
    
    System.out.println( i + i1); 
    System.out.println( d + d1);
    System.out.print(s);

    while (scan.hasNext() == true ) {
    s1 = scan.nextLine();
        
        System.out.print("is"+s1 + " ");
  }