"""任务 5 · 提示文字混进标准输出

蓝桥杯的评测机不读提示。它把标准输入接到数据文件上，跑你的程序，然后拿**标准输出**
与标准答案**逐字比对** —— 多一个字符、多一行、少一个换行都算错。

而 input() 的提示走哪条流，官方文档在讲 sys.stdin 的地方写明了：stdout 用于 print()
和表达式语句的输出，**以及用于 input() 的提示符**。提示与答案走同一条流，
评测机读的正是它：

    $ echo 10 | py prompt_demo.py > out.txt 2> err.txt
    $ cat out.txt
    请输入 N：20
    $ cat err.txt
    （空的）

于是两条规矩：

  · 竞赛代码里用 input() 时，括号里永远不写参数；
  · print 只打印答案本身。

这一份要把「干净」与「脏」两种输出都造出来，让判分能**验**出来：
判分会分别跑 clean() 与 dirty()，检查干净版的标准输出逐字等于答案，
而脏版的标准输出里出现了不该有的东西。并且判分会**改一处学生代码里的提示**，
看判分还能不能抓到 —— 这几条就是这一课要落到手上的动作。

带 print 的行是判分接口，别改；要写的是标着 TODO 的那几段。

跑： printf 10 | py task5_clean_stdout.py clean
判： py run_tests.py
"""

import sys


# ══ TODO 1 ══════════════════════════════════════════════════
# 写一个「干净」的版本：读一个整数 N，打印 N*2。
# 规矩：input() 括号里不写参数；print 只打印答案本身（不加 '答案：' 这类前缀）。
# 期望：标准输出恰好是两倍那一个数，加一个换行，别的什么都没有。
def clean():
    """干净版：标准输出只有答案。"""
    n = 0
    print(n * 2)


# ══ TODO 2 ══════════════════════════════════════════════════
# 再写一个「脏」的版本：做同一件事，但犯了这一课讲的两个错 ——
#   · input() 带了提示文字（提示会写进标准输出）
#   · print 加了与答案无关的前缀
# 你不需要故意写错代码 —— 这个函数的用途就是让判分**验出** stdout 被污染了。
def dirty():
    """脏版：提示与调试串混进了标准输出。"""
    n = 0
    print(n * 2)


def solve():
    """按命令行给的模式跑一种（判分接口，别改）。"""
    which = sys.argv[1] if len(sys.argv) > 1 else 'clean'
    if which == 'clean':
        clean()
    elif which == 'dirty':
        dirty()


solve()
