class変数をCのstatic宣言された変数のように、静的変数として使ってみるテスト。
101回めのプロポーズ。ドラマの設定とはちょっと違いますが。
class herに101回呼び出したら'Yes'を返す関数ansを作ります。
メインからxを'Yes'が返ってくるまで呼び出します。
'Yes'が返ってきたら終了です。
ここでは、クラス変数を使ってますが、インスタンス変数は使ってません。
propose.py
#!/usr/bin/python3
import random
class her:
counter=0
def __init__(self):
random.seed()
return
def ans():
her.counter+=1
if her.counter==101:
return "Yes"
return "mmm" if random.randrange(10)<7 else "No"
if __name__=="__main__":
trial=0
her()
while 1:
trial+=1
print(f"{trial}回目")
print("Me: Marry me please.")
ans=her.ans()
print(f"She: {ans}.")
if ans=="Yes":
break
print("We are just married.")
Cで書くとこのようになります。
propose.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void her_init() {
srand((unsigned)time(NULL));
return;
}
char *her_ans() {
static int counter=1;
return counter++==101?"Yes":(rand()%10<7?"mmm":"No");
}
int main() {
int trial=0;
char *ans;
her_init();
while (1) {
trial++;
printf("%d回目\n",trial);
printf("Me: Marry me please.\n");
ans=her_ans();
printf("She: %s.\n",ans);
if (strcmp(ans,"Yes")==0)
break;
}
printf("We are just married.\n");
}