将字符串转换为整数的奇怪错误

A strange error converting strings to integers

所以我在 2 个脚本中尝试了相同的方法,但由于某些原因,最后一个不起作用,而第一个代码工作正常。

def convert(str):
    str = int(str)

values0 = 123
values1 = 1

try:
    convert(values0) and convert(values1)
    pass
except ValueError:
    sg.PopupError('Only numbers accepted.')
#Now if I try to multiply those values
print(values0 * values1)
#Works!

但出于某些我不知道的原因,这里没有。

#But for some reason this doesn't work in my homework: Maybe because of PySimpleGUI?
import PySimpleGUI as sg
import math


layout = [
    [sg.Text('Enter how many hours you want to work: ')], [sg.InputText('')],
           [sg.Text('Enter how many pay you want per hour: ')], [sg.InputText('')],
        [sg.Button('Calculate Pay')], [sg.Cancel()] ]

window = sg.Window('Pay', layout)

def convert(str):
    str = int(str)



while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Cancel':  
        break
    if event == 'Calculate Pay':
        try:
            convert(values[0]) and convert(values[1])  # I convert here
            break
        except ValueError:
            sg.PopupError('Only numbers accepted.')


sg.Popup('Your pay is: ', values[0] * values[1])     # But this doesn't work
window.close()

抱歉,如果这是一个愚蠢的问题,我是一个完全的初学者,没有任何编码经验。

def convert(str):
    str = int(str)

您的 convert 功能与您的想法不符。它正在为 局部变量 赋值,这在函数外部没有影响(除非 int(str) 引发异常)。

去掉convert,只写出

values[0] = int(values[0])

等等