鱼C论坛

 找回密码
 立即注册
查看: 3224|回复: 12

002课复习,到底哪儿错了

[复制链接]
发表于 2019-11-19 14:35:40 | 显示全部楼层 |阅读模式

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

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

x
我自己按照这个语法编了一个游戏,怎么输都报错,是错在哪儿了呢。 我输 男、女、数字,都报错,报错是int(),看不懂啊

print("welcom")
temp = input("猜猜我是男的还是女的")
guess = int(temp)
if guess == 男:
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-19 14:39:54 | 显示全部楼层
int()是整型,男女是字符型,无法把字符型的男女强制转变成整型,所以报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 14:48:15 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-19 14:56 编辑
guess = int(temp)  # 这一句的意思是把字符串变成整型数,例如,把 '7' 变成 7,在本例中,用的正是字符串,所以,这一句完全多余
if guess == 男: # 这一句的意思是,如果 guess 的内容是 '男' ,这个 '男' 是个字符串,必须用引号括起来
print("welcom")
guess = input("猜猜我是男的还是女的")  . strip()
if guess == '男':
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-11-19 15:37:41 | 显示全部楼层
welcom
猜猜我是男的还是女的男
Traceback (most recent call last):
  File "C:/Users/wwzhang.LANDHIGHTECH/AppData/Local/Programs/Python/Python38/lianxi/002-2.py", line 3, in <module>
    if guess == "男":
NameError: name 'guess' is not defined
>>>
================================================ RESTART: C:/Users/wwzhang.LANDHIGHTECH/AppData/Local/Programs/Python/Python38/lianxi/002-2.py ================================================
welcom
猜猜我是男的还是女的"男"
Traceback (most recent call last):
  File "C:/Users/wwzhang.LANDHIGHTECH/AppData/Local/Programs/Python/Python38/lianxi/002-2.py", line 3, in <module>
    if guess == "男":
NameError: name 'guess' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-19 15:38:26 | 显示全部楼层
我改了后不管是回复“男”还是回复男,都报错。
代码倒是run出来了,怎么回复总是格式不对呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 16:24:30 | 显示全部楼层
int -->  str
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 19:40:27 | 显示全部楼层
不用加 int,而且 “男” 是字符串,要加英文半角引号:
print("welcom")
guess = input("猜猜我是男的还是女的")
if guess == '男':
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-19 21:50:39 | 显示全部楼层
太烦了,直接guess == input(),
楼主知道int()执行什么操作不。。人家本来字符串,你给定义整形了,怎么会不报错呢。。
然后男要加“”,不然怎么识别出来
123这种整型不用加引号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-23 00:36:58 | 显示全部楼层
...
guess = input()
if guess = "男"
...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-30 15:54:25 | 显示全部楼层
temp是用户输入的数据,那么就是字符串类型了,int(temp),这不是矛盾么,int是整型,int改成String试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-4 23:19:12 | 显示全部楼层
搞明白int()函数是做啥的就清楚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-5 10:02:50 | 显示全部楼层
int定义后就变为数字了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-25 09:26:53 | 显示全部楼层
我运行后报错是 invalid literal for int() with base 10
网上查询得知 “使用 int 对一个字符类型的数据进行强制类型转换时,要求输入的字符类型只能为整数”。
所以原代码 我无论输入男 或者 女,运行到guess = int(temp)时,就相当于把输入的文字进行强制转换成整型。
我个人的理解是 guess = int(x)这个代码只适用于 x 为数字。
修改后的代码如下:
print("welcom")
guess = input("猜猜我是男的还是女的?(请输入男 或者 女,然后按回车)") # 直接把输入内容赋值给变量guess;提示用户如何输入答案来让代码能继续运行
#去掉原int的代码
if guess == '男': #把'男' 加上单引号,表示是字符串
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 12:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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