[英]ValueError: invalid literal for int() with base 10: ''turning entry into integer
I am making a guess the number in Zelle graphics and my program does not seem to be working properly.我正在猜测 Zelle 图形中的数字,但我的程序似乎无法正常工作。 I am trying to have the Text Entry become an integer.
我试图让文本条目成为一个整数。 If there are any other problems with what I have done I would appreciate some help.
如果我所做的还有其他问题,我将不胜感激。
I have tried to do int(number) but that hasn't worked我试过做 int(number) 但这没有用
from graphics import *
import random
hidden=random.randrange(1,10)
def responseDict():
levels = dict()
levels['high'] = 'woah! you are too high!'
levels['low']='oh no! that is too low'
levels['equal']='yes, this is just right!'
return levels
def circles(): # cute, but nothing original here, not even usage
win = GraphWin("Random Circles",300,300)
for i in range(300):
r = random.randrange(256)
b = random.randrange(256)
g = random.randrange(256)
color = color_rgb(r, g, b)
radius = random.randrange(3, 40)
x = random.randrange(5, 295)
y = random.randrange (5, 295)
circle = Circle(Point(x,y), radius)
circle.setFill(color)
circle.draw(win)
time.sleep(.05)
def textBox(win):
message = Text(Point(250,50),'Please guess a number 1 through 10 then click outside the box')
message.draw(win)
message2=Text(Point(250,100),'You have 4 tries, to guess the number correctly.')
message2.draw(win)
for i in range(9):
textEntry =Entry(Point(233,200),10)
textEntry.draw(win)
win.getMouse()
number=textEntry.getText()
guess=int(number)
print(guess)
levels = responseDict()
while guess != hidden:
if guess < hidden:
response = Text(Point(300,300), (levels['low']))
response.draw(win)
again=Text(Point(400,400), 'guess again')
again.draw(win)
textEntry=Entry(Point(233,200),10)
textEntry.draw(win)
win.getMouse()
number=textEntry.getText()
guess=int(number)
print(guess)
response.undraw()
again.undraw()
win.getMouse()
elif guess > hidden:
response2=Text(Point(350,350),(levels['high']))
response2.draw(win)
again2=Text(Point(400,400), 'guess again')
again2.draw(win)
textEntry2=Entry(Point(233,200),10)
textEntry2.draw(win)
win.getMouse()
number=textEntry.getText()
guess=int(number)
print(guess)
response2.undraw()
again2.undraw()
win.getMouse()
else:
response=Text(Point(300,300),(levels['equal']))
response.draw(win)
win.getMouse()
circles()
win = GraphWin('guess number', 700,700)
win.setBackground('brown')
textBox(win)
exitText = Text(Point(400,400), 'Click anywhere to quit')
exitText.draw(win)
win.getMouse()
win.close()
I want what the user entered to become an integer and my game to work!我希望用户输入的内容成为一个整数并且我的游戏可以运行!
If someone put text instead of number (ie. Hello
) then int()
gives error如果有人输入文本而不是数字(即
Hello
),则int()
给出错误
ValueError: invalid literal for int() with base 10: 'Hello'
and you have to use try/except
to catch it你必须使用
try/except
来捕捉它
number = textEntry.getText()
try:
guess = int(number)
print(guess)
except Exception as ex:
guess = None
#print(ex)
In except
I set guess = None
so later I can display message for this except
我设置了guess = None
所以稍后我可以为此显示消息
if guess is None:
# show message
response = Text(Point(300, 300), 'It is not number')
response.draw(win)
If you not assign value to guess
in except
then you can get error that this variable doesn't exist - it can happen in first loop when variable wasn't created in previous loop.如果你不分配值
guess
中except
那么你可以得到错误,这个变量不存在-它可以在第一个循环发生时,在以前的循环未创建变量。
My full code (with other changes):我的完整代码(有其他变化):
from graphics import *
import random
hidden = random.randrange(1, 10)
def response_dict():
return {
'high': 'woah! you are too high!',
'low': 'oh no! that is too low',
'equal': 'yes, this is just right!',
'none': 'It is not number',
}
def circles():
win = GraphWin("Random Circles",300,300)
for i in range(300):
r = random.randrange(256)
b = random.randrange(256)
g = random.randrange(256)
color = color_rgb(r, g, b)
radius = random.randrange(3, 40)
x = random.randrange(5, 295)
y = random.randrange(5, 295)
circle = Circle(Point(x, y), radius)
circle.setFill(color)
circle.draw(win)
time.sleep(.05)
def textBox(win):
message = Text(Point(250,50),'Please guess a number 1 through 10 then click outside the box')
message.draw(win)
message2 = Text(Point(250,100),'You have 4 tries, to guess the number correctly.')
message2.draw(win)
# you can get it once
levels = response_dict()
# 4 tries
for i in range(4):
textEntry = Entry(Point(233,200),10)
textEntry.draw(win)
win.getMouse()
# get number
number = textEntry.getText()
try:
guess = int(number)
print(guess)
except Exception as ex:
#print(ex)
guess = None
# hide entry - so user can't put new number
textEntry.undraw()
if guess is None:
# show message
response = Text(Point(300,300), levels['none'])
response.draw(win)
elif guess < hidden:
# show message
response = Text(Point(300,300), levels['low'])
response.draw(win)
elif guess > hidden:
# show message
response = Text(Point(350, 350), levels['high'])
response.draw(win)
else:
response = Text(Point(300, 300), levels['equal'])
response.draw(win)
win.getMouse()
circles()
break # exit loop
again = Text(Point(400,400), 'Guess again, click mouse.')
again.draw(win)
# wait for mouse click
win.getMouse()
# remove messages
response.undraw()
again.undraw()
# --- main ----
win = GraphWin('guess number', 700, 700)
win.setBackground('brown')
textBox(win)
exitText = Text(Point(400, 400), 'Click anywhere to quit')
exitText.draw(win)
win.getMouse()
win.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.