鱼C论坛

 找回密码
 立即注册
查看: 1828|回复: 3

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

[复制链接]
发表于 2021-1-26 14:13:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 挑灯. 于 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: '' ''
————————————————————————————————————————————————————————分割线——————————————————————————————————————————————————————————————————————————————
求助,我看了半天都不知道哪里出了问题
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
1611641278(1).png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-26 14:26:22 | 显示全部楼层
  1. while temp!=0:
复制代码

这里出错了,isdigit()返回的是一个boolean类型的值(True/Flase),而不是0或1,应该用
  1. while temp == False:
复制代码

正确代码如下
  1. import random
  2. com_num=random.randint(1,10)
  3. user_num=input('输入您猜测的数字')
  4. temp=user_num.isdigit()
  5. while temp!=1:
  6.     user_num=input('请输入正确的数据类型:整数')
  7.     temp=user_num.isdigit()
  8. user_num=int(user_num)
  9. chance=2
  10. while chance:
  11.     if user_num>com_num:
  12.         print('猜测错误,比系统数字大',user_num-com_num)
  13.     if user_num<com_num:
  14.         print('猜测错误,比系统数字小',com_num-user_num)
  15.     if user_num==com_num:
  16.         print('恭喜您猜测正确!')
  17.         break
  18.     if chance==2:
  19.         print('您还有2次机会')
  20.     if chance==1:
  21.         print('您还有1次机会')
  22.     user_num=input('猜测错误,请重新输入')
  23.     temp=user_num.isdigit()
  24.     while temp == False:
  25.         user_num=input('请输入正确数据类型:整数!')
  26.         temp=user_num.isdigit()
  27.     user_num=int(user_num)
  28.     chance-=1
  29.     if chance==0:
  30.         print('很遗憾您没有机会了')
  31. print('游戏结束')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-26 15:02:01 | 显示全部楼层
小甲鱼的铁粉 发表于 2021-1-26 14:26
这里出错了,isdigit()返回的是一个boolean类型的值(True/Flase),而不是0或1,应该用

正确代码如下

谢谢 ,我已经找到问题了在哪了。  True 和 Flase 在Pythonn中分别可以用1 和 0  表示 ,  小甲鱼老师在课中 字符串第五讲里边有讲到过这个丫  我的问题出在把  True当作0 使用了   我把0 改成1 代码就正常了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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('游戏结束')
   
   
————————————————————————————————————————————————————————————————————————————————————————————————————————————
你复制看看 ,可以正常运行的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 16:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表