输入以C,C ++和Python中的文件结束字符(EOF)结束

时间:2018-03-03 15:40:02

标签: python python-3.x eof

我几天前开始学习 Python 语言。我在 python 中的技能不是太高。但无论我学到什么,我都想解决 UVA Online Judge 问题

当我尝试解决问题时 272 TEX Quotes 当用户输入由文件结尾给出时,我遇到了终止循环的问题。

在python 中检查我的(100%逻辑解决的)代码(循环终止时除外)

flag = True;

while True: #I want That loop is terminated when getting EOF
    txt = input()

    for var in txt:
        if var == '"':
            if flag:
                print("``", end='')
            else:
                print("''", end='')
            flag = not flag
        else:
            print(var, end='')

    print(end='\n')

检查 C 中我接受的已解决代码,它的终止循环是文件结尾,由 Ctrl + Z给出

#include <stdio.h>

int main()
{
    int flag = 1;
    char txt;

    while((txt = getchar()) != EOF){
        if(txt == '"'){
            if(flag)
                printf("``");
            else
                printf("''");

            flag = !flag;
        }else
            putchar(txt);
    }
    return 0;
}

此外, C ++

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    char txt;
    bool flag = true;

    while((txt = getchar()) != EOF){
        if(txt == '"'){
            if(flag)
                cout << "``";
            else
                cout << "''";

            flag = !flag;
        }else
            cout << txt;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

输入时EOF引发EOFError,因此你可以使用try ... except block with break语句:

flag = True;

while True: #I want That loop is terminated when getting EOF
    try:
        txt = input()

        for var in txt:
            if var == '"':
                if flag:
                    print("``", end='')
                else:
                    print("''", end='')
                flag = not flag
            else:
                print(var, end='')

        print(end='\n')
    except EOFError:
        break