簡體   English   中英

知道我在 python 上的代碼有什么問題嗎?

[英]Any idea what's wrong with my code on python?

我有這個代碼

import serial
import time
import datetime
import MySQLdb as mdb

localtime = time.localtime(time.time())

port = serial.Serial("/dev/ttyUSB0", baudrate=9600)
count = 0
nomor =''
start = '\x02'
stop = '\x03'

def mulai():
    print "Silahkan tempel kartu anda"

def no_dosen()
    print "Dosen tidak terdaftar"

    mulai()

def no_jadwal()
    print "Tidak ada jadwal kuliah"

    mulai()

def ada_dosen(dosen)
    print dosen 
    return

def ada_matkul(matkul)
    print matkul
    return

def cek_dosen(no)
    db = mdb.connect("localhost", "azis48", "azis48", "skripsi")
    cur = db.cursor()
    cond1 = "SELECT * FROM dosen WHERE kode_dosen = %s" %(no)
    try:
        cur.execute(cond1)
        hitung = cur.rowcount
        res1 = cur.fetchall()
        for row in res1:
            nama_dosen = row[1]
        if hitung == 1:
            return nama_dosen
        elif hitung != 1:
            return 'null'
    except:
        db.close()

def cek_jadwal(day,time)
    db = mdb.connect("localhost", "azis48", "azis48", "skripsi")
    cur = db.cursor()
    cond2 = "SELECT nama_mk FROM jadwal WHERE hari = '%s' AND waktu = '%s'" %(day,time)
    try:
        cur.execute(cond2)
        hitung = cur.rowcount
        res2 = cur.fetchall()
        for row in res2:
            nama_mk = row[1]
        if hitung == 1:
            return nama_mk
        elif hitung != 1:
            return 'null'
    except:
        db.close()

def cek_pertemuan(matkul)
    db = mdb.connect("localhost", "azis48", "azis48", "skripsi")
    cur = db.cursor()
    cond3 = "SELECT pertemuan_ke FROM acara WHERE nama_mk = '%s'" %(matkul)
    try:
        cur.execute(cond3)
        res3 = cur.fetchall()
        for row in res3:
            pertemuan_ke = row[0]
        return pertemuan_ke
    except:
        db.close()

def base()
    day = localtime.tm_wday
    time = localtime.tm_hour
    no = str(nomor)
    dosen = cek_dosen(no)
    if dosen == 'null':
        no_dosen()
    elif dosen != 'null':
        ada_dosen()
        matkul = cek_jadwal(day,time)
        if matkul == 'null':
            no_jadwal()
        elif matkul != 'null':
            ada_matkul()
            pertemuan = cek_pertemuan(matkul)
            print pertemuan

    mulai()


if __name__ == '__main__':
  mulai()
  while True: 
    data = port.read()
    count += 1
    if count == 1:
        if str(data) != start:
            nomor = ''
            count = 0
    elif 2 <= count <= 13:
        nomor = nomor + str(data)
    elif count == 16 and str(data) == stop:
        base(nomor)
        nomor = ''
        count = 0

每次我運行這段代碼時,它只打印 def base() 中所有的 ada_dosen 函數,如果我用 ctrl+c 停止它,這里是回溯

DOSEN3
Traceback(most recent call last):
 file "skripsi.py", line 111, in<module>
  base(nomor)

任何ide有什么問題所以我的def base()上的所有功能都在運行?

您的代碼中存在一些問題,突出顯示一些 -

  1. 您的所有函數都定義為def <function name>() ,您沒有結尾: ,否則您很可能會遇到語法錯誤。

  2. 您已將base函數定義為def base() ,但在程序的主要部分,您試圖通過將參數nomor作為base(nomor)傳遞來調用它,我認為您需要更改函數定義以接受參數為 - def base(nomor):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM