【发布时间】:2018-03-03 15:40:01
【问题描述】:
我几天前开始学习 Python 语言。我的 python 技能并不算太高。但无论我学到什么,我都想解决UVA Online Judge问题
当我尝试解决问题时272 TEX Quotes当用户输入由文件结尾给出时,我面临终止循环的问题。
在 python 中检查我的(100% 逻辑解决)代码(while 循环终止除外)
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;
}
【问题讨论】:
-
int txt否则EOF处理混乱。 -
当您向程序提供 EOF 时(例如,通过
^D),input()将引发EOFError并且程序将退出。有什么问题? -
没有其他的代码审查论坛吗?
-
在 c 或 c++ 代码数据类型中可以使用 int txt 因为如果您编写以下代码,例如 printf("%d",getchar());然后,如果您从键盘 A 输入,您应该看到 65,这是 A 的 ASCII 值,或者如果您输入 CTRL-Z,则看到 -1。而且python没有给出数据类型,所以#coderredoc没有问题
-
仅仅因为您将所有对
printf的调用替换为cout并不意味着您真的在编写C++ 代码。现在来吧。
标签: python python-3.x eof