看了几个其他问题和答案,但我似乎无法弄清楚如何将它应用到我的情况中。
这是我的设置:
import random
try:
x = input("How many rounds: ")
rounds = 0
while rounds < int(x):
# rock=0, paper=1, scissors=2
computer1 = random.randint(0,2)
computer2 = random.randint(0,2)
if computer1 == computer2:
print ("draw")
elif computer1 == 0 and computer2 == 1:
print ("lose")
elif computer1 == 1 and computer2 == 2:
print ("lose")
elif computer1 == 2 and computer2 == 0:
print ("lose")
else:
print ("win")
rounds = rounds + 1
except (ValueError):
print('Wrong input')
从我读过的内容来看,下面的代码似乎是一种可能的解决方案,但我并不接近我的编译器,所以我无法测试。那看起来不错吗?如果错了,你能提供解决方案吗?
typdef struct sensor {
const unsigned char pin;
//otherVariables
}Sensor;
Sensor *left = new Sensor();
void initStruct() {
left->pin = 1; //illegal initialization
}
答案 0 :(得分:2)
除非有奇怪的事情发生,否则你不需要动态分配。如果类型是聚合,那么您可以在声明中简单地初始化它:
Sensor left = {1 /*, other variables */};
如果它不是聚合,则必须在构造函数中初始化const
成员:
struct Sensor {
const unsigned char pin;
//otherVariables
Sensor(unsigned char pin) : pin(pin)
//, other variables
{}
};
(我冒昧地删除了奇怪的C风格typedef
。在C ++中,这只是毫无意义的噪音。)
答案 1 :(得分:0)
没有那段代码没有意义。
pin
成员为const
,因此除初始化程序外,您无法分配给该成员。
pin
成员,不是指针,因此malloc()
无法正确编译。
我认为您需要从const
字段中删除struct
,这根本没有任何意义。如果您想防止意外修改它,请创建struct
实例const
,而不是成员。