Spaces:
Sleeping
Sleeping
| import sys | |
| from typing import Iterable | |
| ASCII_UPPERCASE = set("ABCDEFGHIJKLMNOPQRSTUVWXYZ") | |
| ASCII_LOWERCASE = set("abcdefghijklmnopqrstuvwxyz") | |
| ASCII_LETTERS = ASCII_UPPERCASE | ASCII_LOWERCASE | |
| def get_text_from_args_or_stdin(argv: Iterable[str]) -> str: | |
| text_parts = list(argv) | |
| if text_parts: | |
| return " ".join(text_parts) | |
| # If input is piped, read from stdin. Otherwise, prompt the user. | |
| if not sys.stdin.isatty(): | |
| return sys.stdin.read().strip() | |
| try: | |
| return input("Enter text to check if it's English: ").strip() | |
| except EOFError: | |
| return "" | |
| def is_english_by_ascii_letters_only(text: str) -> bool: | |
| """ | |
| Basic heuristic: If every alphabetic character in the text is an ASCII letter (A-Z or a-z), | |
| consider it English. Digits, whitespace, and punctuation are ignored. | |
| """ | |
| for ch in text: | |
| if ch.isalpha() and ch not in ASCII_LETTERS: | |
| return False | |
| return True | |
| def main() -> int: | |
| text = get_text_from_args_or_stdin(sys.argv[1:]) | |
| if is_english_by_ascii_letters_only(text): | |
| print("English") | |
| return 0 | |
| print("Not English") | |
| return 0 | |
| if __name__ == "__main__": | |
| sys.exit(main()) | |