Python3:如何在while循环中检查需要整数的字符串

Python3:如何在while循环中检查需要整数的字符串,python,string,while-loop,integer,sentinel,Python,String,While Loop,Integer,Sentinel,在Python3中:如何检查while循环中需要整数的字符串 这是我目前的代码:我想用“退出”或“q”替换sentinel值“0”。我该怎么做 import random highest = 10 lowest = 1 counter = 0 random_number = random.randint(lowest, highest) # The randint function is in the random function within the random MODULE impo

在Python3中:如何检查while循环中需要整数的字符串

这是我目前的代码:我想用“退出”或“q”替换sentinel值“0”。我该怎么做

import random

highest = 10
lowest = 1
counter = 0

random_number = random.randint(lowest, highest)
# The randint function is in the random function within the random MODULE imported above.

guess = int(input(f"Guess a number between {lowest} and {highest}. Enter '0' at any time to quit: "))

while guess is not random_number:
    if guess == 0:
        print("Quitting game.")
        break
    elif guess < random_number:
        counter += 1
        guess = int(input("Guess higher: "))
    elif guess > random_number:
        counter += 1
        guess = int(input("Guess lower: "))
    if guess == random_number:
        print(f"Correct! Well done!! You got it right after {counter} guess(es)!")
随机导入
最高=10
最低=1
计数器=0
随机数=random.randint(最低、最高)
#randint函数位于上面导入的随机模块内的随机函数中。
guess=int(输入(f“猜一个介于{lowest}和{highest}之间的数字。随时输入“0”退出:))
虽然猜测不是随机数:
如果guess==0:
打印(“退出游戏”)
打破
elif guess<随机数:
计数器+=1
猜测=int(输入(“猜测更高:”)
elif guess>随机数:
计数器+=1
猜测=int(输入(“猜测下限:”)
如果猜测==随机数:
打印(f“正确!做得好!!你在{counter}猜(es)!”之后就得到了)
我想将sentinel值“0”更改为“q/quit”,但不确定如何…

guess=int(in…,不要在int中强制转换,而是字符串)

然后查看字符串是“q”还是“quit”


如果不是q或quit,则在int:elifint(guess)中将其转换为整数之前,必须检查输入是否为
q/quit
。使用
int(input(..)
,将输入转换为整数。如果用户输入字符串,则此操作将失败

。。。
虽然猜测不是str(随机数):
如果guess==“q”或guess==“退出”:
打印(“退出游戏”)
打破
猜测=int(猜测)
#如果用户未输入数字,此操作可能会失败
如果猜测<随机数:
计数器+=1
猜测=输入(“猜测更高:”)
elif guess>随机数:
计数器+=1
猜测=输入(“猜测下限:”)
如果猜测==随机数:
打印(f“正确!做得好!!你在{counter}猜(es)!”之后就得到了)
您可以做一件事:- 一种方法是,您可以在循环中获取输入并检查输入,当用户的猜测与实际数字匹配时,可以使用中断:-

而1:
猜测=输入()
如果guess='q'或guess='quit':
打印(“退出游戏”)
打破
elif int(猜测)<随机数字:
然后继续您程序的其余部分。

也许可以尝试以下方法:

import random

highest = 10
lowest = 1
counter = 0

random_number = random.randint(lowest, highest)

guess = input(f"Guess a number between {lowest} and {highest}. Enter 'quit' at any time to quit: ")

while guess is not random_number:
    if guess == "quit":
        print("Quitting game.")
        break
    guess = int(guess)

    if guess < random_number:
        counter += 1
        guess = int(input("Guess higher: "))
    elif guess > random_number:
        counter += 1
        guess = int(input("Guess lower: "))
    if guess == random_number:
        print(f"Correct! Well done!! You got it right after {counter} guess(es)!")
随机导入
最高=10
最低=1
计数器=0
随机数=random.randint(最低、最高)
guess=input(f“猜一个介于{lowest}和{highest}之间的数字。随时输入'quit'退出:)
虽然猜测不是随机数:
如果猜测==“退出”:
打印(“退出游戏”)
打破
猜测=int(猜测)
如果猜测<随机数:
计数器+=1
猜测=int(输入(“猜测更高:”)
elif guess>随机数:
计数器+=1
猜测=int(输入(“猜测下限:”)
如果猜测==随机数:
打印(f“正确!做得好!!你在{counter}猜(es)!”之后就得到了)
首先,将输入存储为字符串,然后检查它是否等于“quit”。如果不是这样,请将字符串转换为整数并正常进行


我试过了,效果很好,但也许有一种更优雅的方法可以做到这一点。

谢谢大家。这是一份完全有效的代码副本,也是我一直在寻找的。关键是(正如大家提到的)

  • 最初让输入为字符串
  • 立即检查“q”或“退出”
  • 然后将其余代码的guess转换为int
  • 让if/elif语句中的后续输入为字符串
  • guess=input(f“猜一个介于{lowest}和{highest}之间的数字。随时输入'quit'退出:)
    虽然猜测不是随机数:
    如果guess.casefold()=“退出”或guess.casefold()=“q”:
    打印(“退出游戏”)
    打破
    猜测=int(猜测)
    如果猜测<随机数:
    计数器+=1
    猜测=输入(“猜测更高:”)
    elif guess>随机数:
    计数器+=1
    猜测=输入(“猜测下限:”)
    如果猜测==随机数:
    打印(f“正确!做得好!!你在{counter}猜(es)!”之后就得到了)
    
    再次感谢

    下面是相同的代码,带有继续循环的“无效输入”检查器:

    guess = input(f"Guess a number between {lowest} and {highest}. Enter 'quit' at any time to quit: ")
    
    while guess is not random_number:
        if guess.casefold() == "quit" or guess.casefold() == 'q':
            print("Quitting game.")
            break
    
        if guess.isnumeric():
            guess = int(guess)
            if guess < random_number:
                counter += 1
                guess = input("Guess higher: ")
            elif guess > random_number:
                counter += 1
                guess = input("Guess lower: ")
            if guess == random_number:
                print(f"Correct! Well done!! You got it right after {counter} guess(es)!")
        else:
            print("Invalid input. Try again...")
            guess = input(f"Guess a number between {lowest} and {highest}. Enter 'quit' at any time to quit: ")
    
    guess=input(f“猜一个介于{lowest}和{highest}之间的数字。随时输入'quit'退出:)
    虽然猜测不是随机数:
    如果guess.casefold()=“退出”或guess.casefold()=“q”:
    打印(“退出游戏”)
    打破
    如果guess.isnumeric():
    猜测=int(猜测)
    如果猜测<随机数:
    计数器+=1
    猜测=输入(“猜测更高:”)
    elif guess>随机数:
    计数器+=1
    猜测=输入(“猜测下限:”)
    如果猜测==随机数:
    打印(f“正确!做得好!!你在{counter}猜(es)!”之后就得到了)
    其他:
    打印(“输入无效。请重试…”)
    guess=input(f“猜一个介于{lowest}和{highest}之间的数字。随时输入'quit'退出:)
    
    非常感谢!很高兴能为您提供帮助:)
    guess = input(f"Guess a number between {lowest} and {highest}. Enter 'quit' at any time to quit: ")
    
    while guess is not random_number:
        if guess.casefold() == "quit" or guess.casefold() == 'q':
            print("Quitting game.")
            break
    
        if guess.isnumeric():
            guess = int(guess)
            if guess < random_number:
                counter += 1
                guess = input("Guess higher: ")
            elif guess > random_number:
                counter += 1
                guess = input("Guess lower: ")
            if guess == random_number:
                print(f"Correct! Well done!! You got it right after {counter} guess(es)!")
        else:
            print("Invalid input. Try again...")
            guess = input(f"Guess a number between {lowest} and {highest}. Enter 'quit' at any time to quit: ")