鱼C论坛

 找回密码
 立即注册
查看: 2593|回复: 8

[已解决]新手求助,关于input

[复制链接]
发表于 2020-2-11 22:46:05 | 显示全部楼层 |阅读模式

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

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

x
本笨狗想输入一个数字,如果检测输入的全为数字,则把这个数打印;如果不全为数字,则重新输入。代码如下

temp=input("Please input a num\n")
a=temp.isalnum()  #若输入全为数字,则返回true

if a==1:
    c=int(temp)
    print(c)
else:
    print('Wrong input')
    temp=input("Please input a num")
   
输入数字时是对的,但是输入字母(比如a)时没有提示“Wrong input”,而是直接报错
搞不懂了
最佳答案
2020-2-12 13:12:32

请设为已经解决
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-11 22:55:20 | 显示全部楼层
本帖最后由 一个账号 于 2020-2-12 12:56 编辑

改成这样:

  1. while True:
  2.     temp=input("Please input a num\n")
  3.     if temp.isdigit():  #若输入全为数字,则返回true
  4.         print(temp)
  5.         break
  6.     print('Wrong input')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 23:03:04 | 显示全部楼层
用错方法了,isalnum()只要字母或数字都会返回True,换成isdigit()就可以了,不过你这个代码只有2次输入机会,第二次输入没有意义,应该用while来写,在有print可以直接打印数字,没必要用int转,优化代码如下:
  1. while True:
  2.     temp=input("Please input a num\n")
  3.     if temp.isdigit():  #若输入全为数字,则返回true
  4.         print(temp)
  5.         break
  6.     print('Wrong input')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 12:31:32 | 显示全部楼层
txxcat 发表于 2020-2-11 23:03
用错方法了,isalnum()只要字母或数字都会返回True,换成isdigit()就可以了,不过你这个代码只有2次输入机 ...

大哥改的牛比! 本狗还有个问题,既然isalnum()只要字母或数字都会返回True,那我原来的代码运行以后,我输入字母(比如a)应该也是可以运行的呀,为啥就报错了呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 12:33:38 | 显示全部楼层

大哥辛苦! 现在知道应该用isdigit()了嘿嘿,但是为啥我用isalnum就报错呢,按道理输入字母也能运行呀,isalnum()只要字母或数字都会返回True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 12:56:17 | 显示全部楼层
狗夔本狗 发表于 2020-2-12 12:33
大哥辛苦! 现在知道应该用isdigit()了嘿嘿,但是为啥我用isalnum就报错呢,按道理输入字母也能运行呀,i ...

因为字母无法被转换为整形
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 13:11:48 | 显示全部楼层
一个账号 发表于 2020-2-12 12:56
因为字母无法被转换为整形

狗子谢谢大哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 13:12:32 | 显示全部楼层    本楼为最佳答案   

请设为已经解决
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 13:46:28 | 显示全部楼层
判断一个字符串应该用 isdigit(),而且整个程序要放在一个大循环里。

  1. while True:
  2.     temp = input("Please input a num: ")
  3.     a = temp.isdigit()

  4.     if a:
  5.         c = int(temp)
  6.         print(c)
  7.         break    # 跳出循环
  8.     else:
  9.         print('Wrong input')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 12:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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