通过单数/复数差异进行改变

问题描述

我在一个初学者脚本课程中,我们需要编写一些基于整数输入进行更改的代码。它还需要为每种硬币类型打印正确的复数。我在让我的代码工作时遇到了一些麻烦,因为它在它执行的第一个操作时停止,我不知道如何让它继续。我猜这与我如何布置所有这些 elif 语句有关,我不确定正确的做法是让代码继续,如果它仍有余数进行更改:

import sys

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setMinimumSize(300,300)
        self.pushButton1 = QPushButton("see css result",self)
        self.pushButton1.setCheckable(True)
        #self.pushButton1.setAutoFillBackground (True)    # mentioned in
        self.pushButton1.setStyleSheet(css_pushButton())
        self.pushButton1.resize (100,40)
        self.pushButton1.move(50,50)
        print("scc1:",self.pushButton1.styleSheet())

        self.pushButton_control = QPushButton("Button Enabled",self)
        self.pushButton_control.setCheckable(False)
        self.pushButton_control.clicked.connect(self.pushButton_control_clicked)
        self.pushButton_control.move(50,100)
        self.pushButton_control.resize (100,40)

    def pushButton_control_clicked(self):
        print("Checked:",self.pushButton1.isChecked())
        if self.pushButton1.isEnabled():
            print("set False")
            self.pushButton1.setEnabled(False)
            self.pushButton_control.setText(('disABLED'))
        else:
            self.pushButton1.setEnabled(True)
            self.pushButton_control.setText(('ENABLED'))
            print("set True")


def css_pushButton():
    css = '''
            QPushButton {
                            font-size: 10px;
                            background-color: green;
                            color: black;
                            border: 2px green;
                            border-radius: 22px;
                            border-style: outset;
                                }
            QPushButton:hover {
                            background: qradialgradient(
                                cx: 0.3,cy: -0.4,fx: 0.3,fy: -0.4,radius: 1.35,stop: 0 grey,stop: 1 lightgray
                                );
                            }
            QPushButton:enabled{
                            color: black;
                            font:  10px;
                            background: green;
                            background-color: red;
                            border: 1px black;
                            border-style: outset;
                            }
            QPushButton:pressed {
                            color: white;
                            background: yellow;
                            }
            QPushButton:disabled {
                            color: gray;
                            background-color: gray;
                            border: 1px black;
                            border-style: outset;                
                        }
            QPushButton:checked{
                        color: black; 
                        font:  12px;   
                        font: bold;
                        background-color: red;
                        border: 1px black;
                        border-style: outset;
                        }
            QPushButton:!checked{
                        color: black; 
                        font:  12px;   
                        font: bold;
                        background-color: green;
                        border: 1px black;
                        border-style: outset;
            }
            
                '''
    return css

if __name__ == "__main__":
    app = QApplication (sys.argv)
    prog = MainWindow()
    prog.show ()
    app.exec_ ()

谁能给我一个主意?感谢您抽出宝贵时间。

解决方法

始终从其余更改中减去您已经匹配的内容。 然后继续使用 IF 而不是 ELIF,因为 elif 将永远不会再次匹配前一个 if 匹配。

# Get input for amount of change
change = int(input())

# If change is less than 1,print 'No change'
if change < 1:
    print('No change')

# If change is over 199,subtract and print 'X Dollars'
if change > 199:
    print(change // 100,'Dollars\n')
    change = change - change // 100 * 100

# If change is 100-199,subtract and print '1 Dollar'
if 99 < change <= 199:
    print('1 Dollar\n')
    change = change - 100

# If remaining change is 50-99,subtract and print 'X Quarters'
if 49 < change <= 99:
    print(change // 25,'Quarters\n')
    change = change - change // 25 * 25
# ....

等等...

,

如果我的问题是正确的,那就是根据不断减少直到为零的“变化”打印 dollars/dollar [和子值]。

让我澄清一下(不是美元用户:):

  • 1 便士 = 1 美分
  • 1 镍 = 5 美分
  • 1 角钱 = 10 美分
  • 1 个季度 = 25 美分
  • 1 美元 = 100 美分

因此,如果输入为 1451 Cents,则预期输出为:1451 = 14 Dollars 2 Quarters 0 Dime 0 Nickel 1 Penny

你可以这样做:

change = int(input())
wt = {'Dollar': 0,'Quarter': 0,'Dime': 0,'Nickel': 0,'Penny': 0} # weight

wt['Dollar'] = change // 100
change = change % 100
wt['Quarter'] = change // 25
change = change % 25
wt['Dime'] = change // 10
change = change % 10
wt['Nickel'] = change // 5
change = change % 5
wt['Penny'] = change // 1
change = change % 1

for key,value in wt.items():
    print(f'{value} {key}s' if value > 1 else f'{value} {key}',end=' ')
print()

输出:

➜ python file.py 
112341
1123 Dollars 1 Quarter 1 Dime 1 Nickel 1 Penny 


➜ python file.py 
24
0 Dollar 0 Quarter 2 Dimes 0 Nickel 4 Pennys # you might wanna add some small condition to rectify this :)


➜ python file.py 
521
5 Dollars 0 Quarter 2 Dimes 0 Nickel 1 Penny 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...