鱼C论坛

 找回密码
 立即注册
查看: 269|回复: 8

[技术交流] python版C++(闲的)

[复制链接]
发表于 2024-7-16 23:32:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class CoutClass:
    def __lshift__(self, other):
        print(other, end="")
        return self
cout = CoutClass()
endl = "\n"


cout << "1 + 1 = " << 1 + 1 << endl;
cout << "emmmmmm..." << endl;

可惜,cin无法实现

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-16 23:34:07 | 显示全部楼层
哈,Python 版的 C++,让我们来玩一下吧!这段代码实现了一个简单的 `cout` 类,让我们可以像 C++ 中那样使用 `<<` 运算符来输出内容。
class CoutClass:
    def __lshift__(self, other):
        print(other, end="")
        return self

cout = CoutClass()
endl = "\n"

cout << "Hello, World!" << endl
cout << "Python meets C++ magic!" << endl

在这里,我们创建了一个 `CoutClass` 类,重载了 `__lshift__` 方法,使得对象 `cout` 可以接受 `<<` 运算符,用于打印内容。`endl` 变量代表换行符,在需要换行时使用。

输出结果会像这样:
Hello, World!
Python meets C++ magic!

这种写法虽然有些不同寻常,但是可以模仿 C++ 中流式输出的风格,尽管 Python 本身有更直接的输出方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-17 07:32:03 | 显示全部楼层
cin确实无法完美的实现,但还是模仿了一下
a = ['']
b = ['']

class Cin:
    def __rshift__(self, other):
        other[0] = input()
        return self

cin = Cin()
cin >> a >> b;
print(a[0], b[0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-17 10:32:15 | 显示全部楼层
liuhongrun2022 发表于 2024-7-17 07:32
cin确实无法完美的实现,但还是模仿了一下

6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-17 13:38:43 | 显示全部楼层
liuhongrun2022 发表于 2024-7-17 07:32
cin确实无法完美的实现,但还是模仿了一下

实现不了空格切断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-17 13:57:48 | 显示全部楼层

我去研究一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-17 20:04:37 | 显示全部楼层
class CppClass:
    def __lshift__(self, other):
        print(other, end="")
        return self
    def __rshift__(self, other):
        datas = input().split()
        for i, dtype in enumerate(other.datas):
            other.datas[i] = dtype(datas[i])
class Input:
    def __init__(self, *dtypes):
        self.datas = list(dtypes)
    def __rshift__(self, other):
        return Input(self.data + other.data)
cout = cin = CppClass()
endl = "\n"

a = Input(int, str)
cin >> a;
cout << a.datas;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-7 21:07:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-8 12:51:34 | 显示全部楼层
一点沙 发表于 2024-8-7 21:07
芜湖回归了(指我)

我草我前几天刚想到你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表