ChatGPT最近非?;鸨?,很多人都在玩。前幾天在Python最強(qiáng)王者交流群【孤獨(dú)】找ChatGPT要了一個(gè)用Python實(shí)現(xiàn)計(jì)算器的代碼,這里拿出來(lái)給大家分享下。

一、前言
ChatGPT最近非?;鸨芏嗳硕荚谕?。前幾天在Python最強(qiáng)王者交流群【孤獨(dú)】找ChatGPT要了一個(gè)用Python實(shí)現(xiàn)計(jì)算器的代碼,這里拿出來(lái)給大家分享下。下面的代碼是ChatGPT給出的:
# 導(dǎo)入PyQt5模塊
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLineEdit, QPushButton
from PyQt5.QtCore import Qt
# 創(chuàng)建應(yīng)用程序?qū)嵗?/span>
app = QApplication([])
# 創(chuàng)建窗口
window = QWidget()
window.setWindowTitle('計(jì)算器')
# 創(chuàng)建布局
layout = QGridLayout()
window.setLayout(layout)
# 創(chuàng)建文本框
display = QLineEdit()
display.setReadOnly(True)
display.setAlignment(Qt.AlignRight)
display.setMaxLength(15)
layout.addWidget(display, 0, 0, 1, 5)
# 創(chuàng)建按鈕
nums = '789/456*123-0.=+'
i = 0
btn = []
for j in range(2, 5):
for k in range(3):
btn.append(QPushButton(nums[i]))
btn[i].setFixedSize(40, 40)
layout.addWidget(btn[i], j, k)
i += 1
btn.append(QPushButton('.'))
btn[i].setFixedSize(40, 40)
layout.addWidget(btn[i], 5, 0)
btn.append(QPushButton('+/-'))
btn[i+1].setFixedSize(40, 40)
layout.addWidget(btn[i+1], 5, 1)
btn.append(QPushButton('C'))
btn[i+2].setFixedSize(40, 40)
layout.addWidget(btn[i+2], 5, 2)
# 定義計(jì)算器功能
def calc_total():
total = display.text()
total = eval(total)
display.setText(str(total))
# 連接按鈕功能
btn[0].clicked.connect(lambda: display.setText(display.text() + '7'))
btn[1].clicked.connect(lambda: display.setText(display.text() + '8'))
btn[2].clicked.connect(lambda: display.setText(display.text() + '9'))
btn[3].clicked.connect(lambda: display.setText(display.text() + '/'))
btn[4].clicked.connect(lambda: display.setText(display.text() + '4'))
btn[5].clicked.connect(lambda: display.setText(display.text() + '5'))
btn[6].clicked.connect(lambda: display.setText(display.text() + '6'))
btn[7].clicked.connect(lambda: display.setText(display.text() + '*'))
btn[8].clicked.connect(lambda: display.setText(display.text() + '1'))
btn[9].clicked.connect(lambda: display.setText(display.text() + '2'))
btn[10].clicked.connect(lambda: display.setText(display.text() + '3'))
btn[11].clicked.connect(lambda: display.setText(display.text() + '-'))
btn[12].clicked.connect(lambda: display.setText(display.text() + '0'))
btn[13].clicked.connect(lambda: display.setText(display.text() + '.'))
btn[14].clicked.connect(lambda: display.setText(display.text() + '+'))
btn[15].clicked.connect(calc_total)
btn[16].clicked.connect(lambda: display.setText(''))
# 顯示窗口
window.show()
# 運(yùn)行應(yīng)用程序
app.exec_()
本以為ChatGPT給的代碼應(yīng)該是直接可以跑出正確的結(jié)果的,結(jié)果翻車(chē)了!

二、實(shí)現(xiàn)過(guò)程
其實(shí)ChatGPT把基本的框架也都寫(xiě)好了,確實(shí)需要在這個(gè)代碼基礎(chǔ)上稍微修改下才行,邏輯沒(méi)有問(wèn)題,只是少了部分代碼應(yīng)該就能運(yùn)行了。這里【??黑科技·鼓包??】在這個(gè)代碼基礎(chǔ)上稍微修改了下,就可以跑了。修改后的代碼如下:
# 導(dǎo)入PyQt5模塊
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLineEdit, QPushButton,QVBoxLayout
from PyQt5.QtCore import Qt
# 創(chuàng)建應(yīng)用程序?qū)嵗?/span>
app = QApplication([])
# 創(chuàng)建窗口
window = QWidget()
window.setWindowTitle('計(jì)算器')
# 創(chuàng)建布局
layout = QGridLayout()
v_layout = QVBoxLayout()
v_h = QVBoxLayout()
window.setLayout(v_layout)
# 創(chuàng)建文本框
display = QLineEdit()
display.setReadOnly(True)
display.setAlignment(Qt.AlignRight)
display.setMaxLength(15)
layout.addWidget(display, 0, 0, 1, 5)
# 創(chuàng)建按鈕
nums = '789/456*123-0.C+'
i = 0
btn = []
for j in range(1, 5):
for k in range(4):
btn.append(QPushButton(nums[i]))
btn[i].setFixedSize(40, 40)
layout.addWidget(btn[i], j, k)
print(i,j,k)
i += 1
print(i)
dh = QPushButton('=')
dh.setFixedSize(180, 40)
v_layout.addLayout(layout)
v_h.addWidget(dh)
v_layout.addLayout(v_h)
# 定義計(jì)算器功能
def calc_total():
total = display.text()
total = eval(total)
display.setText(str(total))
# 連接按鈕功能
btn[0].clicked.connect(lambda: display.setText(display.text() + '7'))
btn[1].clicked.connect(lambda: display.setText(display.text() + '8'))
btn[2].clicked.connect(lambda: display.setText(display.text() + '9'))
btn[3].clicked.connect(lambda: display.setText(display.text() + '/'))
btn[4].clicked.connect(lambda: display.setText(display.text() + '4'))
btn[5].clicked.connect(lambda: display.setText(display.text() + '5'))
btn[6].clicked.connect(lambda: display.setText(display.text() + '6'))
btn[7].clicked.connect(lambda: display.setText(display.text() + '*'))
btn[8].clicked.connect(lambda: display.setText(display.text() + '1'))
btn[9].clicked.connect(lambda: display.setText(display.text() + '2'))
btn[10].clicked.connect(lambda: display.setText(display.text() + '3'))
btn[11].clicked.connect(lambda: display.setText(display.text() + '-'))
btn[12].clicked.connect(lambda: display.setText(display.text() + '0'))
btn[13].clicked.connect(lambda: display.setText(display.text() + '.'))
btn[14].clicked.connect(lambda: display.setText(''))
btn[15].clicked.connect(lambda: display.setText(display.text() + '+'))
dh.clicked.connect(calc_total)
# 顯示窗口
window.show()
# 運(yùn)行應(yīng)用程序
app.exec_()
運(yùn)行結(jié)果如下圖所示:

簡(jiǎn)直太秀了,順利地解決了粉絲的問(wèn)題。

最后分享一個(gè)??ChatGPT?
?關(guān)于??Python編程能用來(lái)干嘛??
?問(wèn)題的回答,一起共勉下啦!
Python是一種高級(jí)編程語(yǔ)言,具有簡(jiǎn)單易學(xué)、開(kāi)發(fā)效率高等特點(diǎn),被廣泛應(yīng)用于多個(gè)領(lǐng)域。以下是Python編程可以用來(lái)干嘛的一些例子:
網(wǎng)絡(luò)爬蟲(chóng):使用Python編寫(xiě)程序可以爬取互聯(lián)網(wǎng)上的數(shù)據(jù),例如爬取新聞、商品信息等。數(shù)據(jù)分析:Python有強(qiáng)大的數(shù)據(jù)分析庫(kù),例如Numpy、Pandas和Matplotlib等,可以對(duì)數(shù)據(jù)進(jìn)行處理、分析和可視化。
人工智能和機(jī)器學(xué)習(xí):Python有很多強(qiáng)大的人工智能和機(jī)器學(xué)習(xí)庫(kù),例如TensorFlow、Keras和PyTorch等,可以用于圖像識(shí)別、自然語(yǔ)言處理、預(yù)測(cè)等領(lǐng)域。
網(wǎng)站開(kāi)發(fā):Python有很多流行的Web框架,例如Django和Flask等,可以用于構(gòu)建網(wǎng)站和Web應(yīng)用。
游戲開(kāi)發(fā):Python有很多游戲開(kāi)發(fā)庫(kù),例如Pygame等,可以用于開(kāi)發(fā)簡(jiǎn)單的2D游戲。
自動(dòng)化腳本:Python可以編寫(xiě)自動(dòng)化腳本,例如自動(dòng)化測(cè)試、自動(dòng)化部署等。
總之,Python編程具有廣泛的應(yīng)用場(chǎng)景,可以用于數(shù)據(jù)處理、科學(xué)計(jì)算、人工智能、Web開(kāi)發(fā)、自動(dòng)化等多個(gè)領(lǐng)域。同時(shí),Python也是學(xué)習(xí)編程的很好的入門(mén)語(yǔ)言,因?yàn)樗哂泻?jiǎn)單易學(xué)、語(yǔ)法清晰等特點(diǎn)。
三、總結(jié)
大家好,我是皮皮。這篇文章主要盤(pán)點(diǎn)了一個(gè)??ChatGPT?
?處理代碼的問(wèn)題,文中針對(duì)該問(wèn)題,給出了具體的解析和代碼實(shí)現(xiàn),幫助粉絲順利解決了問(wèn)題。