真的不确定这适合的地方.说,我有一个清单:
>>>a = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
如何以这样的方式迭代它,它将首先检查4,然后是5,然后是3,然后是6,然后是2(对于更大的列表,依此类推)?我只能解决中间问题
>>>middle = [len(a)/2 if len(a) % 2 = 0 else ((len(a)+1)/2)]
Run Code Online (Sandbox Code Playgroud)
我真的不确定如何应用这个,我也不确定我的中间方式是最好的方法.我想过抓住两个索引,每次迭代后,添加1并从每个索引中减1,但不知道如何使for循环遵守这些规则.
关于我为什么需要这个; 这是用于分析纸牌游戏中的有效游戏,并且将从给定手牌的中间牌检查到每一端,直到可以播放有效的牌.
假设我有一个指向结构的指针数组,每个结构包含一个字符串,所以对于这样的事情:
printf("%s\n", array[0]);
Run Code Online (Sandbox Code Playgroud)
输出是:
Hello.
Run Code Online (Sandbox Code Playgroud)
如果我执行free(array)遗嘱这是免费array[0]的指向什么?("Hello.").
我花了好几个小时试图手动释放每个元素,而我得到的只是崩溃.我希望这是一个捷径:/
如何使用4个冗余if语句缩短此循环?
此代码用于计算纸牌游戏中玩家手中每套牌的牌数:
suitcounter = [0, 0, 0, 0]
if len(hand) > 0:
for card in hand:
if card[1] == "C":
suitcounter[0] += 1
if card[1] == "D":
suitcounter[1] += 1
if card[1] == "S":
suitcounter[2] += 1
if card[1] == "H":
suitcounter[3] += 1
return suitcounter
Run Code Online (Sandbox Code Playgroud)
手由两颗心和一个铁锹组成:
>>>hand = ['3H', '4H', 'AS']
[0, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
3H= 3的心,4H= 4的心,AS=黑桃的王牌.
我觉得在我所做的事情中,代码"垃圾邮件"太多了.WTB提示.
我的程序对我的任务的预期输入是类似的
./program "hello" < helloworld.txt.然而,问题在于我必须分析程序中的每一行,所以我使用了一个行的结尾作为:
while((c = getchar()) != EOF) {
if (c == '\n') {
/*stuff will be done*/
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是如果helloworld.txt文件包含:
hello
world
Run Code Online (Sandbox Code Playgroud)
它只会读取第一行(如果有更多行,则直到第二行最后一行).
为了解决这个问题,我必须严格地制作一个新的行,helloworld.txt如下所示:
hello
world
//
Run Code Online (Sandbox Code Playgroud)
还有另一种方法吗?