编写一个程序,让用户猜一个1到100之间的随机数。程序会提示用户输入的数字是太高还是太低,直到用户猜中为止。
import random /引入random。
number = random.randint(1, 100) /调用随机数 生成任意整数,区间是1至100.
guess = 0 /准备一个为0的变量,准备参与后续运算。
while guess != number: /循环条件:随机整数,不为0时,接入循环。
guess = int(input("猜一个1到100之间的数字: ")) /强转输入函数,为数字类型并赋值给guess变量。
if guess < number: /判断 随机数和输入变量大小。
print("太低了!")
elif guess > number:
print("太高了!")
else:
print("恭喜你,猜对了!") /根据上面判断,都不满足的情况下,随机数和输入数相等。
上面的代码,在实际运行中,有很多问题,比如,在输入过程中间,想直接结束,或输入了字母,或超过1至100的数字。
结合问题,可以将问题改写:
1,添加退出判断:
import random
number = random.randint(1, 100)
count = 0 /新增计数变量
while True: /修改循环状态为True
count += 1 /进入循环加1
guess = input("猜一个1到100之间的数字:(输入'退出'结束)")/这个不转型,因为还要输入取消
if guess == '退出': /新增判断,是否输入取消
print("程序结束!")
break
gues = int(guess) /排除取消,将输入数字转换为整数类
if gues < number:
print(f"第{count}次,太小了!")
elif gues > number:
print(f"第{count}次,太高了")
else:
print(f"恭喜你!您在第{count}次,猜对了~")
break
2,解决乱输入等情况:
import random
number = random.randint(1, 100)
count = 0
while True:
count += 1
guess = input("猜一个1到100之间的数字:(输入'退出'结束)")
if guess == '退出':
print("程序结束!")
break
else: /新增else连贯上面判断关系
try: /新增异常捕获
gues = int(guess)
if gues < number:
print(f"第{count}次,太小了!")
elif gues > number:
print(f"第{count}次,太高了")
else:
print(f"恭喜你!您在第{count}次,猜对了~")
break
except ValueError: /处理异常
print("请输入数字,或“退出!”") /这里打印告诉输入范围
3,解决1至100输入区间的问题:
import random
number = random.randint(1, 100)
count = 0
while True:
guess = input("猜一个1到100之间的数字:(输入'退出'结束)").strip()
if guess == "退出":
print("程序结束!!")
break
else:
try:
gues = int(guess)
if 1 <= gues <= 100: /新增 判断 输入的值区间
count += 1
if gues < number:
print(f"第{count}次,太小了!")
elif gues > number:
print(f"第{count}次,太高了")
else:
print(f"恭喜你!您在第{count}次,猜对了~")
break
except ValueError:
print("请输入数字,或“退出!”")
注意:这里没有在 输入值,超过判断再处理,是因为,循环一直为True.在没进入1至100区间,之前不能被停止,所以会回到:“猜一个1到100之间的数字:(输入'退出'结束)”,。