请将这段C语言代码按照相同的算法转换为Python代码,能够得到,并给出注释
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
int Py(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
void SJS(int p[])//主办方产生随机数
{
int i,j,k,c=0;
srand((int)time(0));
k=1+(int)(22.0*rand()/(RAND_MAX+1.0));
for(i=0;i<=5;)
{
k=1+(int)(22.0*rand()/(RAND_MAX+1.0));
for(j=0;j<i;j++)
{
if(k==p[j])
break;
}
if(j>=i)
{
p[i]=k;
i++;
}
}
}
void Select(int f[])//抽奖 5个数
{
printf("请从1~22之间任意选取5个不同的整数作为投注号码:\n");
int i=0,j,k=0;
for(i=0;i<5;i++)
scanf("%d",&f[i]);
qsort(f,5,sizeof(f[0]),Py);
while(!k)
{
for(i=0;i<5;i++)
if(f[i]<1||f[i]>22)
{
k=0;
break;
}
if(i>=5) k=1;
if(k)
{
for(j=1;j<5;j++)
if(f[j]==f[j-1])
{
k=0;
break;
}
if(j==5) k=1;
}
if(k==0)
{
printf("输入错误!请从1~22之间任意选取5个不同的整数作为投注号码:\n");
for(i=0;i<5;i++)
scanf("%d",&f[i]);
qsort(f,5,sizeof(f[0]),Py);
}
}
}
int check(int p[],int f[])
{
int i,j,count=0,k=0;//k标记是否抽到与 p[5] 相等的数
for(i=0;i<5;i++)//对比
{
for(j=0;j<5;j++)
if(f[i]==p[j])
{count++;break;}
}
for(i=0;i<5;i++)
if(f[i]==p[5])
{k=1;break;}
if(count==5)//头等奖
return 1;
else if(count==4 && k)//二等奖
return 2;
else if(count==4 && !k)//三等奖
return 3;
else if(count==3)//四等奖
return 4;
else if(count==2)//五等奖
return 5;
else
return 0;
}
void win(int k)
{
if(k==1)
printf("恭喜你!!!中了头等大奖!\n");
else if(k==2)
printf("恭喜你!!!中了二等大奖!\n");
else if(k==3)
printf("恭喜你!!!中了三等大奖!\n");
else if(k==4)
printf("恭喜你!!!中了四等大奖!\n");
else if(k==5)
printf("恭喜你!!!中了五等大奖!\n");
else
printf("本次未中奖,谢谢参与!祝你下次好运!\n");
}
void print()
{
printf("------------操作------------\n");
printf("|抽奖, 请选择1 |\n");
printf("|大奖设置, 请选择2 |\n");
printf("|退出本期抽奖, 请选择0 |\n");
printf("----------------------------\n");
}
int main()
{
int f[5],i,k,h,Case=1,y;
int P[6];
printf(" ********************************\n");
printf(" * 大奖等你拿!!! *\n");
printf(" ********************************\n");
printf("\n\n");
while(1)
{
printf("*************************************第%d期抽奖**********************************\n",Case);
printf("选择1 开始\n");
printf("选择0 退出\n");
printf("选择:");
scanf("%d",&y);
if(y==0) break;
else if(y==1)
{
SJS(P);//主办方的随机数
Case++;
while(1)
{
print();
printf("请选择:");
scanf("%d",&h);
if(h==0)
{
printf("本期抽奖结束!!!\n");
printf("大奖号为:");
for(i=0;i<5;i++)
printf("%d ",P[i]);
printf("特别号为:");
printf("%d\n",P[5]);
break;
}
else if(h==1)
{
Select(f);//抽奖
k=check(P,f);
win(k);
}
else if(h==2)
{
printf("---------兑--------奖----------方-----------式----------\n");
printf("|头等奖:5个号码与5个暗码完全相同 |\n");
printf("|二等奖:4个号码与4个暗码完全相同,另一个号码与特别号相同|\n");
printf("|三等奖:4个号码与4个暗码完全相同,另一个号码与特别号不同|\n");
printf("|四等奖:3个号码与3个暗码完全相同 |\n");
printf("|五等奖:2个号码与2个暗码完全相同 |\n");
printf("|大奖号码将在本期结束公布 |\n");
printf("---------------------------------------------------------\n");
}
}
}
}
printf("结束,谢谢参与!!!\n");
return 0;
}