小编dyl*_*nmc的帖子

在括号中循环使用子赋值

有没有办法在Python中执行此操作?(我知道你可以做Java.)

#PSEUDO CODE!!
while (inp = input()) != 'quit'
    print(inp)
Run Code Online (Sandbox Code Playgroud)

例如,在java中,上面的伪代码转换为:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
    String inp;
    while (!(inp = reader.readLine()).equals("quit")) {
        System.out.println(inp);
    }
} catch (IOException io) {
    System.out.println(io.toString());
}
Run Code Online (Sandbox Code Playgroud)

编辑:

......回答......但这是唯一的方法吗?

while True:
    inp = input()
    if inp == 'quit':
        break
    print(inp)
print('eof')
Run Code Online (Sandbox Code Playgroud)

python loops inline variable-assignment

0
推荐指数
1
解决办法
68
查看次数

带有dict()的SyntaxError

当我尝试创建这个

self.cmds = {
             'help' : self.cmdsHelp,
             'write-start' : self.startWriter,
             'write' : self.writeTo,
             'read-start' : self.startReader,
             'read' : self.readFrom
            }
Run Code Online (Sandbox Code Playgroud)

具有内置dict()功能...即

self.cmds = dict(
                 help = self.cmdsHelp,
                 write-start = self.startWriter,
                 write = self.writeTo,
                 read-start = self.startReader,
                 read = self.readFrom
                )
Run Code Online (Sandbox Code Playgroud)

...我收到此错误:

    write-start = self.startWriter,
                            ^
SyntaxError: keyword can't be an expression
Run Code Online (Sandbox Code Playgroud)

带有大括号({})的字典- 无论是什么特殊名称 - 都有效,但我无法理解为什么"较新版本"(dict()表单)不起作用.有什么东西我错过了,或者你只需​​要使用花括号?

为清楚起见:

字典中的每个值都是一个函数(是的,我确实删除了self.,我也尝试过这两个self.function(),function()所以当我调用它时,我不必这样做,self.cmds[<input>]()但我宁愿这样做self.cmds[<input>])

python dictionary syntax-error python-3.x

0
推荐指数
1
解决办法
77
查看次数

循环中的C后/增量前指针

如果我在主要内容中有以下内容......

int i;
int *p;

i = 0;
p = &i;
printf("%x\n", *p);
for (int j = 0; j < 20; j++) {
    printf("%x ", *p++);
}

puts("\n\n");

p = &i;
for (int j = 0; j < 20; j++) {
    printf("%x ", ++*p);
}
Run Code Online (Sandbox Code Playgroud)

......我的输出很奇怪......

0 569d8a48 7fff 1 0 569d8a38 7fff 9227ce4 1 0 0 0 0 1 0 569d8b98 7fff 0 0 569d8be9 


1 2 3 4 5 6 7 8 9 a b c d e …
Run Code Online (Sandbox Code Playgroud)

c pointers

0
推荐指数
1
解决办法
99
查看次数

超类型中的静态最终结果

为什么即使你已经声明了一个私有的静态最终变量,一个颜色 - 默认C,让我们说 - 然后你仍然不能this.defaultC在超级构造函数中使用(即你只能使用super(defaultC)而不是super(this.defaultC),即使它只是简单的等价defaultC.

我只是试图将Tile类扩展为Wall类,而Wall类我存储了所有墙的所有必要private static final变量(例如它们的宽度和高度,另一个int和默认颜色),而Tile类已经有了一些变量(但它们protected不是private).我不希望Field hides another field弹出警告(因为Tile.java和Wall.java对于许多变量都有相同的名称),所以我使用this.了我的私有静态最终变量,并且有很多错误.

这并不是特别令人不安(因为我只是有一些警告),但我只是想知道为什么.我猜测编译器根本不喜欢它,因为你不能this在超类型之前引用,但仍然完全相同.是否还没有添加这样的功能,忽略了这样的事情,还是有其他原因我看不到你不能使用super(this.PRIVATE_STATIC_FINAL_VARIABLE);

java static final super supertype

-1
推荐指数
1
解决办法
105
查看次数