挑灯. 发表于 2021-1-26 14:13:06

求助,这个语法为什么会报错

本帖最后由 挑灯. 于 2021-1-26 14:17 编辑

猜数字游戏完善版
第一个版本是我昨天做的,能够正常运行,源代码:
import random
com_num=random.randint(1,10)
user_num=input('输入您猜测的数字')
temp=user_num.isdigit()
while temp!=1:
    user_num=input('请输入正确的数据类型:整数')
    temp=user_num.isdigit()
user_num=int(user_num)
chance=2
while chance:
    if user_num>com_num:
      print('猜测错误,比系统数字大',user_num-com_num)
    if user_num<com_num:
      print('猜测错误,比系统数字小',com_num-user_num)
    if user_num==com_num:
      print('恭喜您猜测正确!')
      break
    if chance==2:
      print('您还有2次机会')
    if chance==1:
      print('您还有1次机会')
    user_num=input('猜测错误,请重新输入')
    temp=user_num.isdigit()
    while temp!=0:
      user_num=input('请输入正确数据类型:整数!')
      temp=user_num.isdigit()
    user_num=int(user_num)
    chance-=1
    if chance==0:
      print('很遗憾您没有机会了')
print('游戏结束')
——————————————————————————————————————————————————————————————分割线——————————————————————————————————————————————————————————————————————————
第二个是我今天整改的,第27行代码报错,源代码:
import random
com_num=random.randint(1,10)
user_num=input('输入您猜测的数字')
temp=user_num.isdigit()
while temp!=1:
    user_num=input('请输入正确的数据类型:整数')
    temp=user_num.isdigit()
user_num=int(user_num)
chance=2
while chance:
    if user_num>com_num:
      print('猜测错误,比系统数字大',user_num-com_num)
    if user_num<com_num:
      print('猜测错误,比系统数字小',com_num-user_num)
    if user_num==com_num:
      print('恭喜您猜测正确!')
      break
    if chance==2:
      print('您还有2次机会')
    if chance==1:
      print('您还有1次机会')
    user_num=input('猜测错误,请重新输入')
    temp=user_num.isdigit()
    while temp!=0:
      user_num=input('请输入正确数据类型:整数!')
      temp=user_num.isdigit()
    user_num=int(user_num)
    chance-=1
    if chance==0:
      print('很遗憾您没有机会了')
print('游戏结束')
—————————————————————————————————————————————————————————————————————分割线————————————————————————————————————————————————————————————
错误代码为:
Traceback (most recent call last):
File "C:\Users\13217\Desktop\测试.py", line 27, in <module>
    user_num=int(user_num)
ValueError: invalid literal for int() with base 10: '' ''
————————————————————————————————————————————————————————分割线——————————————————————————————————————————————————————————————————————————————
求助,我看了半天都不知道哪里出了问题
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

小甲鱼的铁粉 发表于 2021-1-26 14:26:22

while temp!=0:
这里出错了,isdigit()返回的是一个boolean类型的值(True/Flase),而不是0或1,应该用
while temp == False:
正确代码如下
import random
com_num=random.randint(1,10)
user_num=input('输入您猜测的数字')
temp=user_num.isdigit()
while temp!=1:
    user_num=input('请输入正确的数据类型:整数')
    temp=user_num.isdigit()
user_num=int(user_num)
chance=2
while chance:
    if user_num>com_num:
      print('猜测错误,比系统数字大',user_num-com_num)
    if user_num<com_num:
      print('猜测错误,比系统数字小',com_num-user_num)
    if user_num==com_num:
      print('恭喜您猜测正确!')
      break
    if chance==2:
      print('您还有2次机会')
    if chance==1:
      print('您还有1次机会')
    user_num=input('猜测错误,请重新输入')
    temp=user_num.isdigit()
    while temp == False:
      user_num=input('请输入正确数据类型:整数!')
      temp=user_num.isdigit()
    user_num=int(user_num)
    chance-=1
    if chance==0:
      print('很遗憾您没有机会了')
print('游戏结束')

挑灯. 发表于 2021-1-26 15:02:01

小甲鱼的铁粉 发表于 2021-1-26 14:26
这里出错了,isdigit()返回的是一个boolean类型的值(True/Flase),而不是0或1,应该用

正确代码如下

谢谢 ,我已经找到问题了在哪了。True 和 Flase 在Pythonn中分别可以用1 和 0表示 ,小甲鱼老师在课中 字符串第五讲里边有讲到过这个丫{:5_99:}我的问题出在把True当作0 使用了   我把0 改成1 代码就正常了

挑灯. 发表于 2021-1-26 15:04:17

小甲鱼的铁粉 发表于 2021-1-26 14:26
这里出错了,isdigit()返回的是一个boolean类型的值(True/Flase),而不是0或1,应该用

正确代码如下

修改后的源代码:
import random
com_num=random.randint(1,10)
user_num=input('输入您猜测的数字')
temp=user_num.isdigit()
while temp!=1:
    user_num=input('请输入正确的数据类型:整数')
    temp=user_num.isdigit()
user_num=int(user_num)
chance=2
while chance:
    if user_num>com_num:
      print('猜测错误,比系统数字大',user_num-com_num)
    if user_num<com_num:
      print('猜测错误,比系统数字小',com_num-user_num)
    if user_num==com_num:
      print('恭喜您猜测正确!')
      break
    if chance==2:
      print('您还有2次机会')
    if chance==1:
      print('您还有1次机会')
    user_num=input('猜测错误,请重新输入')
    temp=user_num.isdigit()
    while temp!=1:
      user_num=input('请输入正确数据类型:整数!')
      temp=user_num.isdigit()
    user_num=int(user_num)
    chance-=1
    if chance==0:
      print('很遗憾您没有机会了')
print('游戏结束')
   
   
————————————————————————————————————————————————————————————————————————————————————————————————————————————
你复制看看 ,可以正常运行的
页: [1]
查看完整版本: 求助,这个语法为什么会报错