欢迎光临散文网 会员登陆 & 注册

Python宁波公交游戏程序代码

2023-04-01 00:00 作者:sharlyhl  | 我要投稿

documentname="ningbobus.txt"

cancelledline=False

lineoutofserives=False

onewayarrowsign='→'

twowaysarrowsign='⇌'

orsign='/'

questionquantity=10

questionlist=[1,2]

optionsquantity=4

optionnumber=False

import random

def loadingdata(cancelledline,lineoutofserives,documentname):

    x=open(documentname,'r',encoding='utf-8')

    data1=[]

    for line in x.readlines():

        line=line.strip()

        linedata=line.split()

        if len(linedata)!=0:

            while len(linedata)<6:

                linedata.append('')

            data1.append(linedata)

    x.close()

    data=[]

    linename=[]

    terminalA=[]

    runningdiraction=[]

    terminalB=[]

    company=[]

    remarks=[]

    for i in data1:

        if (lineoutofserives==True or not '停运' in i[5]) and (cancelledline==True or not '撤销' in i[5]) :

            data.append(i)

    for i in data:

        if orsign in i[0]:

            linename.append(i[0].split(orsign))

        else:

            linename.append(i[0])

        if orsign in i[1]:

            terminalA.append(i[1].split(orsign))

        else:

            terminalA.append(i[1])

        runningdiraction.append(i[2])

        if orsign in i[3]:

            terminalB.append(i[3].split(orsign))

        else:

            terminalB.append(i[3])

        company.append(i[4])

        remarks.append(i[5])

    return [linename,terminalA,runningdiraction,terminalB,company,remarks]

def compare(a,b):

    if type(a)==type(b):

        if isinstance(a,str):

            if a==b:

                return True

        elif isinstance(a,list):

            if len(a)==len(b):

                a.sort()

                b.sort()

                for i in range(0,len(a)):

                    if a[i]!=b[i]:

                        return False

                return True

    return False

def questiondata(cancelledline,lineoutofserives):

    data=(loadingdata(cancelledline,lineoutofserives,documentname))

    linename=data[0]

    terminalA=data[1]

    runningdiraction=data[2]

    terminalB=data[3]

    company=data[4]

    remarks=data[5]

    datanumber=random.randint(0,len(linename)-1)

    questionterminalA=terminalA[datanumber]

    questionrunningdiraction=runningdiraction[datanumber]

    questionterminalB=terminalB[datanumber]

    questionremarks=remarks[datanumber]

    answerlinename=[]

    for i in range(0,len(linename)):

        if ((compare(terminalA[i],questionterminalA) and compare(terminalB[i],questionterminalB)) or ((compare(terminalA[i],questionterminalB) and compare(terminalB[i],questionterminalA))) and runningdiraction[i]==twowaysarrowsign) and questionremarks==remarks[i] and questionrunningdiraction==runningdiraction[i]:

            if isinstance(linename[i],str):

                answerlinename.append(linename[i])

            elif isinstance(linename[i],list):

                for j in linename[i]:

                    answerlinename.append(j)

    return [questionterminalA,questionrunningdiraction,questionterminalB,questionremarks,answerlinename]

def question1(cancelledline,lineoutofserives):

    x=questiondata(cancelledline,lineoutofserives)

    question=x[0:4]

    answerdata=x[4]

    for i in question:

        if isinstance(i,str):

            print(i,end=' ')

        else:

            print(i[0],end='')

            for j in i[1:]:

                print(orsign+j,end='')

            print(' ',end='')

    print()

    answer=input()

    if answer in answerdata:

        answerdata.remove(answer)

        return [True,answerdata]

    else:

        return [False,answerdata]

def q1(cancelledline,lineoutofserives,orsign):

    k=question1(cancelledline,lineoutofserives)

    if k[0]:

        print('回答正确',end='')

        if k[1]!=[]:

            print(',本题答案还有:',end='')

            if len(k[1])>1:

                print(k[1][0],end='')

                for i in k[1][1:]:

                    print(orsign+i,end='')

            else:

                print(k[1][0],end='')

        print()

        return True

    else:

        print('回答错误,本题答案为:',end='')

        if len(k[1])>1:

            print(k[1][0],end='')

            for i in k[1][1:]:

                print(orsign+i,end='')

        else:

            print(k[1][0],end='')

        print()

        return False

def question2(cancelledline,lineoutofserives,optionsquantity):

    linename=loadingdata(cancelledline,lineoutofserives,documentname)[0]

    x=questiondata(cancelledline,lineoutofserives)

    question=x[0:4]

    answerdata=x[4]

    notanswerlinename=[]

    for i in linename:

        if isinstance(i,str):

            if not(i in answerdata):

                notanswerlinename.append(i)

        else:

            for j in i:

                if not(j in answerdata):

                    notanswerlinename.append(j)

    for i in question:

        if isinstance(i,str):

            print(i,end=' ')

        else:

            print(i[0],end='')

            for j in i[1:]:

                print(orsign+j,end='')

            print(' ',end='')

    print()

    random.shuffle(notanswerlinename)

    options=notanswerlinename[0:optionsquantity-1]

    random.shuffle(answerdata)

    answeroption=random.randint(0,optionsquantity-1)

    options.insert(answeroption,answerdata[0])

    return [options,answeroption]

def q2(cancelledline,lineoutofserives,optionsquantity):

    x=question2(cancelledline,lineoutofserives,optionsquantity)

    options=x[0]

    answeroption=x[1]

    for i in range(len(options)):

        if len(options)>=27 or optionnumber:

            print('('+str(i+1)+')',end=' ')

        else:

            print('('+chr(65+i)+')',end=' ')

        print(options[i])

    answer=input()

    if (len(options)>=27 or optionnumber):

        if int(answer)-1==answeroption:

            print('回答正确')

            return True

        else:

            print('回答错误,本题答案为:'+str(answeroption+1))

            return False

    else:

        if (answer==chr(answeroption+65) and ord(answer[0])>=65 and ord(answer[0])<=90) or (answer==chr(answeroption+97) and ord(answer[0])>=97 and ord(answer[0])<=122):

            print('回答正确')

            return True

        else:

            print('回答错误,本题答案为:'+chr(answeroption+65))

            return False

def game(cancelledline,lineoutofserives,orsign,questionquantity,questionlist):

    qnumber=1

    rightquestions=0

    questionquantity=int(questionquantity)

    listnumber=0

    while questionquantity+1!=qnumber:

        print('第'+str(qnumber),end='')

        if questionquantity>0:

            print('/'+str(questionquantity)+'题')

        else:

            print('题')

        if questionlist[listnumber]==1:

            if q1(cancelledline,lineoutofserives,orsign):

                rightquestions+=1

        if questionlist[listnumber]==2:

            if q2(cancelledline,lineoutofserives,optionsquantity):

                rightquestions+=1

        rightpercent=rightquestions/qnumber*100

        qnumber+=1

        listnumber=(listnumber+1)%len(questionlist)

        print('正确率:'+(str(rightpercent//1)[:-2]+(str(rightpercent%1)+'00')[1:4]+'%'))

        print()

game(cancelledline,lineoutofserives,orsign,questionquantity,questionlist)

input()


Python宁波公交游戏程序代码的评论 (共 条)

分享到微博请遵守国家法律