标签: while-loop

使用while块什么都不做坏事?

我目前正在学习'C程序设计语言'的练习.这是我的解决方案之一:

int c;

while ((c=getchar()) != EOF) {

if (c == ' ') {

    while ((c = getchar()) == ' ')

    {}  // do nothing?

    putchar(' ');

}

putchar(c);

}
Run Code Online (Sandbox Code Playgroud)

我在这里发现了一些与我的完全不同的解决方案,并使用额外的变量来跟踪发生了什么,而我只是使用while循环来跳过所有空间.我的解决方案感觉有点混乱,因为看起来有点hackish有一个在花括号之间没有任何东西的while循环.我想知道是否有任何好的理由不这样做?谢谢你的建议:-)

c while-loop

24
推荐指数
4
解决办法
3万
查看次数

如何使用数据库中的值填充HTML下拉列表

作为我正在创建的HTML表单的一部分,我希望有一个下拉列表,它将列出我的数据库中的所有用户名.

我认为下面的代码可以解决问题,但是下拉列表是空的 - 有人可以协助我做错了什么吗?谢谢.

<tr>
<td>Owner</td>
<td>
<select name="owner">
<?php 

$sql = mysqli_query($connection, "SELECT username FROM users");

while ($row = $sql->fetch_assoc()){

?>
<option value="owner1"><?php echo $row['username']; ?></option>

<?php
// close while loop 
}
?>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

php sql while-loop

24
推荐指数
3
解决办法
18万
查看次数

在顶部或底部测试循环?(而与之相比)

当我在大学(80年代中期)学习CS时,不断重复的一个想法是总是写出在顶部(而不是......)而不是在底部(做...同时)测试的循环.环.这些概念通常以对研究的参考作为后盾,这些研究表明,在顶部测试的循环在统计上比其底部测试对应物更可能是正确的.

结果,我几乎总是编写在顶部测试的循环.如果它在代码中引入了额外的复杂性,我不会这样做,但这种情况似乎很少见.我注意到一些程序员几乎专门编写在底部测试的循环.当我看到像这样的结构:

if (condition)
{
    do
    {
       ...
    } while (same condition);
}
Run Code Online (Sandbox Code Playgroud)

或者反过来(if在里面while),它让我想知道他们是否真的以这种方式编写它,或者if当他们意识到循环没有处理null情况时他们添加了语句.

我做了一些谷歌搜索,但没有找到任何关于这个主题的文献.你们(和女孩们)如何写你的循环?

language-agnostic loops while-loop do-while

23
推荐指数
9
解决办法
1万
查看次数

而语言

对于我的计算语言类的理论,我们得到了一个家庭作业,用一种语言来实现一段代码,该语言只有流控制的while语句(没有if语句).这主要是为了证明你可以只使用while循环编写图灵完备语言.

对于那些能理解语言语法的人,以下是语言规则:

S -> S;S | while C do S od | id := E

E -> E + T | T | E - T

T -> T * F | F | F / T

F -> id | cons | (E)

C -> E = E | E > E | E < E | E >= E | E <= E | E != E | C and C | C or C | not(C)
Run Code Online (Sandbox Code Playgroud)

这是从我的班级笔记中复制的,所以如果缺少或不正确,请不要责怪我! …

language-theory while-loop

23
推荐指数
3
解决办法
5040
查看次数

你如何在C++中创建一个Repeat-Until循环?

你如何在C++中创建一个Repeat-Until循环?而不是标准的While或For循环.我需要在每次迭代结束时检查条件,而不是在开始时检查.

c++ loops for-loop while-loop

23
推荐指数
3
解决办法
14万
查看次数

"while 1"和"while True"之间有什么区别?

我已经看到了两种在Python中创建无限循环的方法:

  1. while 1:
        do_something()
    
    Run Code Online (Sandbox Code Playgroud)
  2. while True:
        do_something()
    
    Run Code Online (Sandbox Code Playgroud)

这些之间有什么区别吗?比另一个更pythonic?

python infinite-loop while-loop

23
推荐指数
3
解决办法
3万
查看次数

在Perl中,为什么`while(<HANDLE>){...}`构造没有本地化`$ _`?

Perl没有$_使用以下语法自动进行本地化的设计(或技术)原因是什么:

while (<HANDLE>) {...}
Run Code Online (Sandbox Code Playgroud)

哪个被重写为:

while (defined( $_ = <HANDLE> )) {...}
Run Code Online (Sandbox Code Playgroud)

所有隐式写入其它结构的$_以集中方式做到这一点(for/foreach,map,grep),但是while,必须明确定位变量:

local $_;
while (<HANDLE>) {...}
Run Code Online (Sandbox Code Playgroud)

我的猜测是它与在命令行开关的"Super-AWK"模式下使用Perl有关,但这可能是错误的.

因此,如果有人知道(或者更好地参与语言设计讨论),您能否与我们分享这种行为背后的原因?更具体地说,为什么允许值$_在循环之外保持被认为是重要的,尽管它可能导致的错误(我倾向于在S​​O和其他Perl代码中看到所有这些)?


如果从上面不清楚,$_必须进行本地化的原因while如下例所示:

sub read_handle {
    while (<HANDLE>) { ... }
}

for (1 .. 10) {
     print "$_: \n"; # works, prints a number from 1 .. 10
     read_handle;
     print "done with $_\n";  # does not work, prints the last line read from …
Run Code Online (Sandbox Code Playgroud)

perl language-design local while-loop

23
推荐指数
2
解决办法
589
查看次数

IntelliJ建议用for循环替换while循环.为什么?

    ArrayList<Object> list = new ArrayList<Object>();
    list.add(12);
    list.add("Hello");
    list.add(true);
    list.add('c');

    Iterator iterator = list.iterator();
    while(iterator.hasNext())
    {
        System.out.println(iterator.next().toString());
    }
Run Code Online (Sandbox Code Playgroud)

当我在IntelliJ IDEA中输入这个Java代码时,代码分析功能建议我用for循环替换while循环,因为我正在迭代一个集合.为什么是这样?

java foreach loops intellij-idea while-loop

23
推荐指数
3
解决办法
8543
查看次数

如何在Python中打破while循环?

我必须为我的comp课程制作这个游戏,我无法弄清楚如何突破这个循环.看,我必须通过滚动更大的数字来对抗"计算机",看看谁有更高的分数.但我无法弄清楚如何从轮到我"打破",并转向计算机转向.我需要"Q"(退出)来表示计算机开始转动,但我不知道该怎么做.

ans=(R)
while True:
    print('Your score is so far '+str(myScore)+'.')
    print("Would you like to roll or quit?")
    ans=input("Roll...")
    if ans=='R':
        R=random.randint(1, 8)
        print("You rolled a "+str(R)+".")
        myScore=R+myScore
    if ans=='Q':
        print("Now I'll see if I can break your score...")
        break
Run Code Online (Sandbox Code Playgroud)

python break while-loop

23
推荐指数
4
解决办法
13万
查看次数

如何在zsh中一次遍历字符串一个单词

如何修改以下代码,以便在zsh中运行时,它会一次扩展$things并遍历它们?

things="one two"

for one_thing in $things; do
    echo $one_thing
done
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

one 
two
Run Code Online (Sandbox Code Playgroud)

但如上所述,它输出:

one two
Run Code Online (Sandbox Code Playgroud)

(我正在寻找在bash中运行上述代码时获得的行为)

bash zsh while-loop expansion

23
推荐指数
3
解决办法
4万
查看次数